diff options
Diffstat (limited to 'src/2022/day15/aoc.h')
-rw-r--r-- | src/2022/day15/aoc.h | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/src/2022/day15/aoc.h b/src/2022/day15/aoc.h index b35c85b..87c3208 100644 --- a/src/2022/day15/aoc.h +++ b/src/2022/day15/aoc.h @@ -1,5 +1,6 @@ #include "common.h" #include <vector> +#include <set> namespace aoc2022 { @@ -30,6 +31,7 @@ struct sensor { static int minx; static int maxx; + static std::set<pos> beacons; pos ps[2] = {{0,0},{0,0}}; @@ -56,22 +58,6 @@ struct sensor { printf("S(%d, %d) B(%d, %d)\n", ps[0].x, ps[0].y, ps[1].x, ps[1].y); } - bool inscope(pos p) { - auto d1 = mdistance(ps[0], ps[1]); - auto d2 = mdistance(ps[0], p); - return d2 <= d1; - } - - line line_by_dy(int dy) { - int d = mdistance(ps[0], ps[1]); - int y = ps[0].y + dy; - int dx = d - std::abs(dy); - int x = ps[0].x - dx; - pos p0 = {x, y}; - pos p1 = {x + 2 * dx, y}; - return {p0 , p1}; - } - sensor(line_view lv) { const char* p = lv.line; int *is[] = {&ps[0].x, &ps[0].y, &ps[1].x, &ps[1].y}; @@ -85,6 +71,7 @@ struct sensor { } p++; } + beacons.insert(ps[1]); auto x1 = ps[0].x - mdistance(ps[0], ps[1]); auto x2 = ps[0].x + mdistance(ps[0], ps[1]); if (minx > x1) minx = x1; |