From f5c9d40d2ff42464531ad8473359348646c868c0 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Fri, 5 Dec 2025 08:55:43 +0100 Subject: aoc 2025, day 5, part 1 --- 2025/src/day05.cpp | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 2025/src/day05.cpp (limited to '2025/src/day05.cpp') diff --git a/2025/src/day05.cpp b/2025/src/day05.cpp new file mode 100644 index 0000000..2322948 --- /dev/null +++ b/2025/src/day05.cpp @@ -0,0 +1,62 @@ +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +namespace { + +using Range = tuple; +using Ranges = vector; + +tuple> +read_file(const filesystem::path& filename) +{ + static const regex range{ R"(^(\d+)-(\d+)$)" }; + static const regex single{ R"(^(\d+)$)" }; + + ifstream file{ filename }; + + Ranges ranges; + vector numbers; + + for ( string line; getline(file, line); ) { + smatch match; + if ( regex_search(line, match, range) ) { + ranges.emplace_back(stol(match[1]), stol(match[2])); + } + else if ( regex_search(line, match, single) ) { + numbers.emplace_back(stol(match[1])); + } + } + + return { ranges, numbers }; +} + +void +part1(const Ranges& ranges, const vector& numbers) +{ + long count = 0; + for ( const auto number: numbers ) { + for ( const auto [start, end]: ranges ) { + if ( number >= start && number <= end ) { + ++count; + break; + } + } + } + cout << "Part 1: " << count << '\n'; +} + +} // namespace + +int +main() +{ + const auto [ranges, numbers] = read_file("data/day05.txt"); + part1(ranges, numbers); +} -- cgit v1.3