#pragma once #include "common.h" #include namespace aoc2017 { struct pos { int x; int y; }; struct alpha_grid { int width; int height; char* grid; pos start; alpha_grid(int w, int h) : width(w), height(h) { grid = (char*)malloc(width * height); memset(grid, 0, width * height); start = {INT32_MAX, INT32_MAX}; } char& get(int x, int y) { static char space = ' '; return x >= 0 && x < width && y >= 0 && y < height ? *(grid + y * width + x) : space; } char& get(pos p) { return get(p.x, p.y); } void load(int r, line_view lv) { const char* p = lv.line; for (int i = 0; i < width; i++) { get(i, r) = *(p + i); if (r == 0 && get(i, r) == '|') { start = {i, r}; } } } }; std::pair day19(line_view); } // namespace aoc2017