aboutsummaryrefslogtreecommitdiff
path: root/src/2022/day15/aoc.h
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2022-12-19 11:55:26 +0800
committerkaiwu <kaiwu2004@gmail.com>2022-12-19 11:55:26 +0800
commitb29b67b0d72f29dcaa46a06d6e72e46f62a748fe (patch)
tree6493b7316f81386162611776404f0a11d8df6081 /src/2022/day15/aoc.h
parentaca43f8afb18fc45127f2442facf24b2748c4870 (diff)
downloadadvent-of-code-b29b67b0d72f29dcaa46a06d6e72e46f62a748fe.tar.gz
advent-of-code-b29b67b0d72f29dcaa46a06d6e72e46f62a748fe.zip
2022 day15 part2
Diffstat (limited to 'src/2022/day15/aoc.h')
-rw-r--r--src/2022/day15/aoc.h19
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;