aboutsummaryrefslogtreecommitdiff
path: root/2022
diff options
context:
space:
mode:
Diffstat (limited to '2022')
-rw-r--r--2022/src/day10.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/2022/src/day10.cpp b/2022/src/day10.cpp
new file mode 100644
index 0000000..76c953c
--- /dev/null
+++ b/2022/src/day10.cpp
@@ -0,0 +1,44 @@
1#include <fstream>
2#include <iostream>
3#include <string>
4#include <vector>
5using namespace std;
6
7vector<int>
8read_file(string_view filename)
9{
10 fstream input{ filename };
11 vector<int> cycles{};
12 int reg_x = 1;
13
14 static const string add_instr = "addx ";
15
16 for ( string line; getline(input, line); ) {
17 cycles.emplace_back(reg_x);
18
19 if ( line.starts_with(add_instr) ) {
20 cycles.emplace_back(reg_x);
21 reg_x += stoi(line.substr(add_instr.size()));
22 }
23 }
24 cycles.emplace_back(reg_x);
25
26 return cycles;
27}
28
29void
30part1(const vector<int>& cycles)
31{
32 int sum = 0;
33 for ( size_t cycle = 19; cycle < cycles.size(); cycle += 40 ) {
34 sum += static_cast<int>(cycle + 1) * cycles[cycle];
35 }
36 cout << sum << endl;
37}
38
39int
40main()
41{
42 const auto cycles = read_file("data/day10.txt");
43 part1(cycles);
44}