From d73937c6977a7cb6b2516ba662495ef662fd3fb0 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Thu, 4 Jan 2024 14:15:17 +0100 Subject: solution for day 3 --- 2020/src/day03.cpp | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 2020/src/day03.cpp (limited to '2020/src') diff --git a/2020/src/day03.cpp b/2020/src/day03.cpp new file mode 100644 index 0000000..f9cf200 --- /dev/null +++ b/2020/src/day03.cpp @@ -0,0 +1,62 @@ +#include +#include +#include +#include +#include +#include +#include +using namespace std; + +auto +read_file(string_view filename) +{ + fstream input{ filename }; + vector data; + + for ( string line; getline(input, line); ) { + data.emplace_back(line); + } + + return data; +} + +auto +solve(const vector& puzzle, size_t delta_col, size_t delta_row) +{ + size_t col = 0; + size_t row = 0; + + auto sum = 0L; + while ( row < puzzle.size() ) { + if ( puzzle[row][col] == '#' ) { + ++sum; + } + + row += delta_row; + + col += delta_col; + col %= puzzle[0].size(); + } + return sum; +} + +void +part1(const vector& puzzle) +{ + cout << solve(puzzle, 3, 1) << endl; +} + +void +part2(const vector& puzzle) +{ + cout << solve(puzzle, 1, 1) * solve(puzzle, 3, 1) * solve(puzzle, 5, 1) * solve(puzzle, 7, 1) * solve(puzzle, 1, 2) << endl; +} + +int +main() +{ + const auto puzzle = read_file("data/day03.txt"); + part1(puzzle); + part2(puzzle); +} + -- cgit v1.3