diff --git a/day3/day3.cpp b/day3/day3.cpp index 246296a..a11fdba 100644 --- a/day3/day3.cpp +++ b/day3/day3.cpp @@ -1,5 +1,7 @@ +#include #include #include +#include #include constexpr char TREE_CHAR = '#'; @@ -39,13 +41,20 @@ int part1(const std::vector &input) { } long part2(const std::vector &input) { - return 1L * findNumTrees(input, 1, 1) * findNumTrees(input, 3, 1) * findNumTrees(input, 5, 1) * - findNumTrees(input, 7, 1) * findNumTrees(input, 1, 2); + // deltas in the x and y directions respectively + std::vector> deltas{std::pair(1, 1), std::pair(3, 1), + std::pair(5, 1), std::pair(7, 1), + std::pair(1, 2)}; + + return std::reduce(std::execution::par, deltas.begin(), deltas.end(), 1L, + [&](long total, std::pair step_deltas) { + return total * findNumTrees(input, step_deltas.first, step_deltas.second); + }); } int main(int argc, char *argv[]) { if (argc != 2) { - std::cerr << "./" << argv[0] << "" << std::endl; + std::cerr << argv[0] << "" << std::endl; return 1; }