diff options
author | kaiwu <kaiwu2004@gmail.com> | 2022-12-05 16:54:51 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2022-12-05 16:54:51 +0800 |
commit | 1a311c7983f71668b6f892018328f1669f3574fd (patch) | |
tree | 755b5d9f8a70b144fa92d77f9882df4dc8d4150b | |
parent | af1074a592e6cd246dd2db726ccc4eb6873e3ba4 (diff) | |
download | advent-of-code-1a311c7983f71668b6f892018328f1669f3574fd.tar.gz advent-of-code-1a311c7983f71668b6f892018328f1669f3574fd.zip |
2020 day9
-rw-r--r-- | src/2020/day9/aoc.cpp | 18 | ||||
-rw-r--r-- | test/test_2020.cpp | 2 |
2 files changed, 17 insertions, 3 deletions
diff --git a/src/2020/day9/aoc.cpp b/src/2020/day9/aoc.cpp index c7a826f..10ba789 100644 --- a/src/2020/day9/aoc.cpp +++ b/src/2020/day9/aoc.cpp @@ -30,11 +30,25 @@ bool check25(int i, int* weak) { } bool check_contiguous(int i, int* end, int target) { - return false; + if (target == 0) { + *end = i; + return true; + } + if (target < 0) { + return false; + } + return check_contiguous(i + 1, end, target - numbers[i]); } static void minmax(int x, int y, int* min, int* max) { - + for(int i = x; i < y; i++) { + if (*min > numbers[i]) { + *min = numbers[i]; + } + if (*max < numbers[i]) { + *max = numbers[i]; + } + } } std::pair<int, int> day9(line_view file) { diff --git a/test/test_2020.cpp b/test/test_2020.cpp index 3712327..35e6a20 100644 --- a/test/test_2020.cpp +++ b/test/test_2020.cpp @@ -70,5 +70,5 @@ TEST_CASE("Encoding Error", "[2020]") { line_view lv = load_file("../src/2020/day9/input"); auto p = aoc2020::day9(lv); REQUIRE(22477624 == p.first); - // REQUIRE(0 == p.second); + REQUIRE(2980044 == p.second); } |