From 40023c113c17ff0e8b5b7dfffef7c24d6632d63a Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Sat, 9 Dec 2023 11:51:54 +0100 Subject: Code nochmals vereinfacht und auf das eig. Problem angepasst :) --- src/day09.cpp | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/src/day09.cpp b/src/day09.cpp index 1e9bde5..0019d05 100644 --- a/src/day09.cpp +++ b/src/day09.cpp @@ -28,7 +28,7 @@ read_ints(const string& line) template T -solve_rec_part1(const vector& values) +solve_rec(const vector& values) { vector differences; @@ -37,7 +37,7 @@ solve_rec_part1(const vector& values) } auto all_zeros = all_of(differences.begin(), differences.end(), [](T diff) { return diff == 0; }); if ( !all_zeros ) { - return solve_rec_part1(differences) + values.back(); + return solve_rec(differences) + values.back(); } else { return values.back(); @@ -51,35 +51,19 @@ part1() long sum = 0; for ( const auto& line: lines ) { - sum += solve_rec_part1(read_ints(line)); + sum += solve_rec(read_ints(line)); } cout << sum << endl; } -template -T -solve_rec_part2(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 values.front() - solve_rec_part2(differences); - } - else { - return values.front(); - } -} - void part2() { long sum = 0; for ( const auto& line: read_file("data/day09.txt") ) { - sum += solve_rec_part2(read_ints(line)); + auto values = read_ints(line); + reverse(values.begin(), values.end()); + sum += solve_rec(values); } cout << sum << endl; } -- cgit v1.3