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/day02.cpp | 100 ---------------------------------------------------------- 1 file changed, 100 deletions(-) delete mode 100644 src/day02.cpp (limited to 'src/day02.cpp') diff --git a/src/day02.cpp b/src/day02.cpp deleted file mode 100644 index df560c3..0000000 --- a/src/day02.cpp +++ /dev/null @@ -1,100 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -vector -split(const string& line, char sep) -{ - vector parts{}; - stringstream input{ line }; - - for ( string part; getline(input, part, sep); ) { - parts.emplace_back(part); - } - - return parts; -} - -void -part1() -{ - fstream input{ "data/day02.txt" }; - - auto sum = 0; - for ( string line; getline(input, line); ) { - auto game = split(line, ':'); - - auto gameId = 0; - sscanf(game[0].data(), "Game %d", &gameId); // NOLINT - - auto subsets = split(game[1], ';'); - - auto fail = false; - - for ( const auto& subset: subsets ) { - auto cubes = split(subset, ','); - - map counts{}; - - for ( const auto& cube: cubes ) { - auto data = split(cube, ' '); - - auto count = stoi(data[1]); - auto color = data[2]; - - counts[color] += count; - } - - fail |= (counts["red"] > 12) || (counts["green"] > 13) || (counts["blue"] > 14); // NOLINT - } - - if ( !fail ) { - sum += gameId; - } - } - cout << sum << endl; -} - -void -part2() -{ - fstream input{ "data/day02.txt" }; - - auto sum = 0; - - for ( string line; getline(input, line); ) { - auto game = split(line, ':'); - - auto subsets = split(game[1], ';'); - - map colors{}; - - for ( const auto& subset: subsets ) { - auto cubes = split(subset, ','); - - for ( const auto& cube: cubes ) { - auto data = split(cube, ' '); - - auto count = stoi(data[1]); - auto color = data[2]; - - colors[color] = max(colors[color], count); - } - } - sum += colors["red"] * colors["green"] * colors["blue"]; - } - cout << sum << endl; -} - -int -main() -{ - part1(); - part2(); -} -- cgit v1.3