From 56e890cec0a28c0a485212ccebfaf774235a79a2 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Wed, 3 Jan 2024 23:35:54 +0100 Subject: prepare for more puzzles ... :) --- src/day09.cpp | 75 ----------------------------------------------------------- 1 file changed, 75 deletions(-) delete mode 100644 src/day09.cpp (limited to 'src/day09.cpp') diff --git a/src/day09.cpp b/src/day09.cpp deleted file mode 100644 index 4b30e6e..0000000 --- a/src/day09.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include -#include -#include -#include -#include -using namespace std; - -vector -read_file(string_view filename) -{ - fstream input{ filename }; - vector data; - - for ( string line; getline(input, line); ) { - data.emplace_back(line); - } - - return data; -} - -template -vector -read_ints(const string& line) -{ - stringstream iss{ line }; - return vector{ istream_iterator{ iss }, istream_iterator{} }; -} - -template -T -solve_rec(const vector& values) -{ - vector differences; - - for ( size_t idx = 1; idx < values.size(); ++idx ) { - differences.emplace_back(values[idx] - values[idx - 1]); - } - auto all_zeros = all_of(differences.begin(), differences.end(), [](T diff) { return diff == 0; }); - if ( !all_zeros ) { - return solve_rec(differences) + values.back(); - } - else { - return values.back(); - } -} - -void -part1(const vector& lines) -{ - long sum = 0; - for ( const auto& line: lines ) { - sum += solve_rec(read_ints(line)); - } - cout << sum << endl; -} - -void -part2(const vector& lines) -{ - long sum = 0; - for ( const auto& line: lines ) { - auto values = read_ints(line); - reverse(values.begin(), values.end()); - sum += solve_rec(values); - } - cout << sum << endl; -} - -int -main() -{ - auto lines = read_file("data/day09.txt"); - part1(lines); - part2(lines); -} -- cgit v1.3