From 22d5bd5e7a8b0340bdcafa3d65a1ad3669d1a33d Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Mon, 9 Dec 2024 17:35:26 +0100 Subject: aoc 2024, day 9, part 1 --- 2024/src/day09.cpp | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 2024/src/day09.cpp (limited to '2024/src') diff --git a/2024/src/day09.cpp b/2024/src/day09.cpp new file mode 100644 index 0000000..dd25a9d --- /dev/null +++ b/2024/src/day09.cpp @@ -0,0 +1,58 @@ +#include +#include +#include +#include +using namespace std; + +vector +read_file(string_view filename) +{ + fstream input{ filename }; + string line; + int fid = 0; + + getline(input, line); + + vector data; + for ( size_t i = 0; i != line.size(); ++i ) { + vector values(size_t(line.at(i) - '0'), (i % 2 == 0) ? fid++ : -1); + data.insert(data.end(), values.begin(), values.end()); + } + return data; +} + +void +part1(const vector& data) +{ + vector result; + + auto lhs = data.begin(); + auto rhs = data.end(); + + while ( lhs != rhs ) { + if ( *lhs != -1 ) { + result.push_back(*lhs); + } + else { + --rhs; + while ( *rhs == -1 ) { + --rhs; + } + result.push_back(*rhs); + } + ++lhs; + } + + long sum = 0; + for ( size_t i = 0; i != result.size(); ++i ) { + sum += long(i) * result.at(i); + } + cout << sum << endl; +} + +int +main() +{ + auto data = read_file("data/day09.txt"); + part1(data); +} -- cgit v1.3