aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2022-04-07 16:39:29 +0800
committerkaiwu <kaiwu2004@gmail.com>2022-04-07 16:39:29 +0800
commit6a5d6a498f1b6f43a72b638f1874b174a3e32bc1 (patch)
treead423a9bc044449cf4e47b215ac4417f8b78a24d
parentc1ef11f0ff4a5c518caa13c472188fac8fd7981c (diff)
downloadadvent-of-code-6a5d6a498f1b6f43a72b638f1874b174a3e32bc1.tar.gz
advent-of-code-6a5d6a498f1b6f43a72b638f1874b174a3e32bc1.zip
2020 day3
-rw-r--r--src/2020/day3/aoc.cpp18
-rw-r--r--src/2020/day3/aoc.h2
-rw-r--r--test/test_2020.cpp4
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);
}