From dcca312c9b1b5311c30d1f1ade9765d2a102913d Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Sat, 2 Dec 2023 09:08:01 +0100 Subject: Bessere Dateinamen --- src/day01.cpp | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/day01.cpp (limited to 'src/day01.cpp') diff --git a/src/day01.cpp b/src/day01.cpp new file mode 100644 index 0000000..ff357bc --- /dev/null +++ b/src/day01.cpp @@ -0,0 +1,82 @@ +#include +#include +#include +#include +#include +#include +using namespace std; + +void +part1() +{ + string digits{ "0123456789" }; + fstream input{ "data/day01.txt" }; + + int sum = 0; + for ( string line; input >> line; ) { + auto first = find_first_of(begin(line), end(line), begin(digits), end(digits)); + auto last = find_first_of(rbegin(line), rend(line), begin(digits), end(digits)); + + auto value = (*first - '0') * 10 + (*last - '0'); + + sum += value; + } + cout << sum << endl; +} + +void +part2() +{ + map map{ + { "0", 0 }, + { "1", 1 }, + { "2", 2 }, + { "3", 3 }, + { "4", 4 }, + { "5", 5 }, + { "6", 6 }, + { "7", 7 }, + { "8", 8 }, + { "9", 9 }, + { "one", 1 }, + { "two", 2 }, + { "three", 3 }, + { "four", 4 }, + { "five", 5 }, + { "six", 6 }, + { "seven", 7 }, + { "eight", 8 }, + { "nine", 9 }, + }; + + fstream input{ "data/day01.txt" }; + + auto sum = 0; + for ( string line; input >> line; ) { + string sub; + vector digits; + + for ( auto ch: line ) { + sub += ch; + + for ( const auto& word: map ) { + if ( sub.ends_with(word.first) ) { + digits.push_back(word.second); + } + } + } + + auto first = digits.front(); + auto last = digits.back(); + + sum += (first * 10) + last; + } + cout << sum << endl; +} + +int +main() +{ + part1(); + part2(); +} -- cgit v1.3