aboutsummaryrefslogtreecommitdiff
path: root/src/day01.cpp
diff options
context:
space:
mode:
authorThomas Schmucker <ts@its1.de>2024-01-03 23:35:54 +0100
committerThomas Schmucker <ts@its1.de>2024-01-03 23:35:54 +0100
commit56e890cec0a28c0a485212ccebfaf774235a79a2 (patch)
treed9c6241a1aa247e06ab5ba2f6f11967b77d458ec /src/day01.cpp
parente9a1cb0441d137d7a26cb303b7e72d3424b7392d (diff)
downloadadvent-of-code-56e890cec0a28c0a485212ccebfaf774235a79a2.tar.gz
advent-of-code-56e890cec0a28c0a485212ccebfaf774235a79a2.tar.bz2
advent-of-code-56e890cec0a28c0a485212ccebfaf774235a79a2.zip
prepare for more puzzles ... :)
Diffstat (limited to 'src/day01.cpp')
-rw-r--r--src/day01.cpp82
1 files changed, 0 insertions, 82 deletions
diff --git a/src/day01.cpp b/src/day01.cpp
deleted file mode 100644
index ff357bc..0000000
--- a/src/day01.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
1#include <algorithm>
2#include <fstream>
3#include <iostream>
4#include <map>
5#include <string>
6#include <vector>
7using namespace std;
8
9void
10part1()
11{
12 string digits{ "0123456789" };
13 fstream input{ "data/day01.txt" };
14
15 int sum = 0;
16 for ( string line; input >> line; ) {
17 auto first = find_first_of(begin(line), end(line), begin(digits), end(digits));
18 auto last = find_first_of(rbegin(line), rend(line), begin(digits), end(digits));
19
20 auto value = (*first - '0') * 10 + (*last - '0');
21
22 sum += value;
23 }
24 cout << sum << endl;
25}
26
27void
28part2()
29{
30 map<string, int> map{
31 { "0", 0 },
32 { "1", 1 },
33 { "2", 2 },
34 { "3", 3 },
35 { "4", 4 },
36 { "5", 5 },
37 { "6", 6 },
38 { "7", 7 },
39 { "8", 8 },
40 { "9", 9 },
41 { "one", 1 },
42 { "two", 2 },
43 { "three", 3 },
44 { "four", 4 },
45 { "five", 5 },
46 { "six", 6 },
47 { "seven", 7 },
48 { "eight", 8 },
49 { "nine", 9 },
50 };
51
52 fstream input{ "data/day01.txt" };
53
54 auto sum = 0;
55 for ( string line; input >> line; ) {
56 string sub;
57 vector<int> digits;
58
59 for ( auto ch: line ) {
60 sub += ch;
61
62 for ( const auto& word: map ) {
63 if ( sub.ends_with(word.first) ) {
64 digits.push_back(word.second);
65 }
66 }
67 }
68
69 auto first = digits.front();
70 auto last = digits.back();
71
72 sum += (first * 10) + last;
73 }
74 cout << sum << endl;
75}
76
77int
78main()
79{
80 part1();
81 part2();
82}