diff options
author | kaiwu <kaiwu2004@gmail.com> | 2022-04-07 16:39:29 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2022-04-07 16:39:29 +0800 |
commit | 6a5d6a498f1b6f43a72b638f1874b174a3e32bc1 (patch) | |
tree | ad423a9bc044449cf4e47b215ac4417f8b78a24d | |
parent | c1ef11f0ff4a5c518caa13c472188fac8fd7981c (diff) | |
download | advent-of-code-6a5d6a498f1b6f43a72b638f1874b174a3e32bc1.tar.gz advent-of-code-6a5d6a498f1b6f43a72b638f1874b174a3e32bc1.zip |
2020 day3
-rw-r--r-- | src/2020/day3/aoc.cpp | 18 | ||||
-rw-r--r-- | src/2020/day3/aoc.h | 2 | ||||
-rw-r--r-- | test/test_2020.cpp | 4 |
3 files changed, 17 insertions, 7 deletions
diff --git a/src/2020/day3/aoc.cpp b/src/2020/day3/aoc.cpp index e135988..1315e2b 100644 --- a/src/2020/day3/aoc.cpp +++ b/src/2020/day3/aoc.cpp @@ -30,7 +30,7 @@ void progress(pos p, pos* d1, pos* d2, int dx, const std::vector<line_view>& tre } } -int day3(line_view file) { +std::pair<int, size_t> day3(line_view file) { std::vector<line_view> trees; per_line(file, [&trees](line_view lv) { trees.push_back({lv.line, lv.line + lv.length - 1}); @@ -39,10 +39,18 @@ int day3(line_view file) { pos d1{3, 1}; pos d2{0, 0}; - int count{0}; - progress({0, 0}, &d1, &d2, 0, trees, &count); - - return count; + int count0{0}; + progress({0, 0}, &d1, &d2, 0, trees, &count0); + + int count1{0}; + size_t total{1}; + pos ds[] = {{1, 1}, {3, 1}, {5, 1}, {7, 1}, {1, 2}}; + for (auto& d : ds) { + progress({0, 0}, &d, &d2, 0, trees, &count1); + total *= count1; + count1 = 0; + } + return {count0, total}; } } // namespace aoc2020 diff --git a/src/2020/day3/aoc.h b/src/2020/day3/aoc.h index 58e49a5..d32423a 100644 --- a/src/2020/day3/aoc.h +++ b/src/2020/day3/aoc.h @@ -3,5 +3,5 @@ namespace aoc2020 { -int day3(line_view); +std::pair<int, size_t> day3(line_view); } diff --git a/test/test_2020.cpp b/test/test_2020.cpp index f534e3e..4b70fff 100644 --- a/test/test_2020.cpp +++ b/test/test_2020.cpp @@ -22,5 +22,7 @@ TEST_CASE("Password Philosophy", "[2020]") { TEST_CASE("Toboggan Trajectory", "[2020]") { // line_view lv = load_file("../src/2020/day3/input0"); line_view lv = load_file("../src/2020/day3/input"); - REQUIRE(242 == aoc2020::day3(lv)); + auto p = aoc2020::day3(lv); + REQUIRE(242 == p.first); + REQUIRE(2265549792 == p.second); } |