aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Schmucker <ts@its1.de>2025-12-05 08:55:43 +0100
committerThomas Schmucker <ts@its1.de>2025-12-05 08:55:43 +0100
commitf5c9d40d2ff42464531ad8473359348646c868c0 (patch)
treee0d28da4b205a9824012f9f0f31be5dedea7fd66
parentb3fc02c96b041e17ce2d0119b3900a97e9ec7cc0 (diff)
downloadadvent-of-code-f5c9d40d2ff42464531ad8473359348646c868c0.tar.gz
advent-of-code-f5c9d40d2ff42464531ad8473359348646c868c0.tar.bz2
advent-of-code-f5c9d40d2ff42464531ad8473359348646c868c0.zip
aoc 2025, day 5, part 1
-rw-r--r--2025/src/day05.cpp62
1 files changed, 62 insertions, 0 deletions
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 @@
1#include <filesystem>
2#include <fstream>
3#include <iostream>
4#include <regex>
5#include <string>
6#include <tuple>
7#include <vector>
8
9using namespace std;
10
11namespace {
12
13using Range = tuple<long, long>;
14using Ranges = vector<Range>;
15
16tuple<Ranges, vector<long>>
17read_file(const filesystem::path& filename)
18{
19 static const regex range{ R"(^(\d+)-(\d+)$)" };
20 static const regex single{ R"(^(\d+)$)" };
21
22 ifstream file{ filename };
23
24 Ranges ranges;
25 vector<long> numbers;
26
27 for ( string line; getline(file, line); ) {
28 smatch match;
29 if ( regex_search(line, match, range) ) {
30 ranges.emplace_back(stol(match[1]), stol(match[2]));
31 }
32 else if ( regex_search(line, match, single) ) {
33 numbers.emplace_back(stol(match[1]));
34 }
35 }
36
37 return { ranges, numbers };
38}
39
40void
41part1(const Ranges& ranges, const vector<long>& numbers)
42{
43 long count = 0;
44 for ( const auto number: numbers ) {
45 for ( const auto [start, end]: ranges ) {
46 if ( number >= start && number <= end ) {
47 ++count;
48 break;
49 }
50 }
51 }
52 cout << "Part 1: " << count << '\n';
53}
54
55} // namespace
56
57int
58main()
59{
60 const auto [ranges, numbers] = read_file("data/day05.txt");
61 part1(ranges, numbers);
62}