From 87948e3f7a475c12259aac9c2b883691328c1130 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Wed, 6 Dec 2023 18:08:52 +0100 Subject: Lösung für Tag6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/day06.cpp | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/day06.cpp (limited to 'src') diff --git a/src/day06.cpp b/src/day06.cpp new file mode 100644 index 0000000..9a429c5 --- /dev/null +++ b/src/day06.cpp @@ -0,0 +1,74 @@ +#include +#include +#include +#include +#include +#include +using namespace std; + +template +vector +read_ints(const string& line) +{ + stringstream iss{ line }; + return vector{ istream_iterator{ iss }, istream_iterator{} }; +} + +long +solve(long time, long winningDistance) +{ + long counter = 0; + for ( long pushTime = 0; pushTime < time; ++pushTime ) { + auto distance = (time * pushTime - pushTime * pushTime); + counter += long(distance > winningDistance); + } + return counter; +} + +void +part1() +{ + fstream input{ "data/day06.txt" }; + string line; + + getline(input, line); + auto times = read_ints(line.substr(line.find(':') + 1)); + + getline(input, line); + auto distances = read_ints(line.substr(line.find(':') + 1)); + + long result = 1; + for ( size_t idx = 0; idx != times.size(); ++idx ) { + result *= solve(times[idx], distances[idx]); + } + cout << result << endl; +} + +string +join(const string& line) +{ + stringstream iss{ line }; + return accumulate(istream_iterator{ iss }, istream_iterator{}, string{}); +} + +void +part2() +{ + fstream input{ "data/day06.txt" }; + string line; + + getline(input, line); + auto time = stol(join(line.substr(line.find(':') + 1))); + + getline(input, line); + auto distance = stol(join(line.substr(line.find(':') + 1))); + + cout << solve(time, distance) << endl; +} + +int +main() +{ + part1(); + part2(); +} -- cgit v1.3