From 899b3da016b0060164a4afb36738d920888ac0da Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Mon, 11 Nov 2024 19:34:50 +0100 Subject: aoc 2015, day02 --- 2015/src/day02.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 2015/src/day02.cpp (limited to '2015/src') diff --git a/2015/src/day02.cpp b/2015/src/day02.cpp new file mode 100644 index 0000000..a2d54df --- /dev/null +++ b/2015/src/day02.cpp @@ -0,0 +1,57 @@ +#include +#include +#include +#include +#include + +using namespace std; + +auto +read_file(string_view filename) +{ + fstream input{ filename }; + vector> puzzle; + for ( string line; getline(input, line); ) { + int w, h, l; + if ( sscanf(line.c_str(), "%dx%dx%d", &w, &h, &l) == 3 ) { + puzzle.emplace_back(w, h, l); + } + } + return puzzle; +} + +void +part1(const vector>& puzzle) +{ + int sum = 0; + for ( const auto& [w, h, l]: puzzle ) { + auto side1 = l * w; + auto side2 = w * h; + auto side3 = h * l; + + sum += 2 * side1 + 2 * side2 + 2 * side3 + min({ side1, side2, side3 }); + } + cout << sum << endl; +} + +void +part2(const vector>& puzzle) +{ + int sum = 0; + for ( const auto& [w, h, l]: puzzle ) { + auto side1 = 2 * l; + auto side2 = 2 * w; + auto side3 = 2 * h; + + sum += side1 + side2 + side3 - max({ side1, side2, side3 }) + l * w * h; + } + cout << sum << endl; +} + +int +main() +{ + auto puzzle = read_file("data/day02.txt"); + part1(puzzle); + part2(puzzle); +} -- cgit v1.3