aboutsummaryrefslogtreecommitdiff
path: root/src/2022/day15/aoc.cpp
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2022-12-15 18:09:56 +0800
committerkaiwu <kaiwu2004@gmail.com>2022-12-15 18:09:56 +0800
commitd96f65b6b51b78ddd9f51896ea99c8010ed77812 (patch)
treecd245be03f67a4c6b139745ab7e02a6006100634 /src/2022/day15/aoc.cpp
parent363e289eb2b54757e52dc93efa3090c763a8aa39 (diff)
downloadadvent-of-code-d96f65b6b51b78ddd9f51896ea99c8010ed77812.tar.gz
advent-of-code-d96f65b6b51b78ddd9f51896ea99c8010ed77812.zip
2022 day15 part1
Diffstat (limited to 'src/2022/day15/aoc.cpp')
-rw-r--r--src/2022/day15/aoc.cpp41
1 files changed, 39 insertions, 2 deletions
diff --git a/src/2022/day15/aoc.cpp b/src/2022/day15/aoc.cpp
index 6e2d7a7..09a923f 100644
--- a/src/2022/day15/aoc.cpp
+++ b/src/2022/day15/aoc.cpp
@@ -1,9 +1,46 @@
#include "aoc.h"
+#include <set>
namespace aoc2022 {
+int sensor::minx;
+int sensor::maxx;
-std::pair<int, int> day15(line_view) {
- return {0, 0};
+
+int no_beacon(int y, std::vector<sensor>& ss) {
+ int count{0};
+ for (int x = sensor::minx; x <= sensor::maxx; x++) {
+ sensor::pos p;
+ p.x = x;
+ p.y = y;
+ size_t n{0};
+ for (auto&s : ss) {
+ if(s.inscope(p)) {
+ n++;
+ }
+ }
+ // printf("(%d, %d) has %zu\n", x, y, n);
+ count += (bool) n > 0;
+ }
+ return count;
+}
+
+bool valid(sensor::pos p, int dx) {
+ return p.x >= 0 && p.x <= dx && p.y >= 0 && p.y <= dx;
+}
+
+int only_beacon(int dx, std::vector<sensor>& ss) {
+ return 0;
+}
+
+std::pair<int, int> day15(line_view file) {
+ std::vector<sensor> ss;
+ per_line(file, [&ss](line_view lv){
+ ss.emplace_back(lv);
+ return true;
+ });
+ int n1 = no_beacon(2000000, ss);
+ int n2 = only_beacon(4000000, ss);
+ return {n1, n2};
}
}