diff options
author | kaiwu <kaiwu2004@gmail.com> | 2022-12-15 18:09:56 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2022-12-15 18:09:56 +0800 |
commit | d96f65b6b51b78ddd9f51896ea99c8010ed77812 (patch) | |
tree | cd245be03f67a4c6b139745ab7e02a6006100634 /src/2022/day15/aoc.cpp | |
parent | 363e289eb2b54757e52dc93efa3090c763a8aa39 (diff) | |
download | advent-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.cpp | 41 |
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}; } } |