aboutsummaryrefslogtreecommitdiff
path: root/2022
diff options
context:
space:
mode:
authorThomas Schmucker <ts@its1.de>2024-05-01 18:31:47 +0200
committerThomas Schmucker <ts@its1.de>2024-05-01 18:31:47 +0200
commit10a32edef7343ab00fd1555850823e38cfb87def (patch)
treec55e80b3e4e36006f3777e725264b47eeccf2dea /2022
parent4aaf38359e7323f75fd55d28a330c665bb81a477 (diff)
downloadadvent-of-code-10a32edef7343ab00fd1555850823e38cfb87def.tar.gz
advent-of-code-10a32edef7343ab00fd1555850823e38cfb87def.tar.bz2
advent-of-code-10a32edef7343ab00fd1555850823e38cfb87def.zip
day 8, part 1, advent of code 2022
Diffstat (limited to '2022')
-rw-r--r--2022/src/day08.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/2022/src/day08.cpp b/2022/src/day08.cpp
new file mode 100644
index 0000000..f46fdc6
--- /dev/null
+++ b/2022/src/day08.cpp
@@ -0,0 +1,68 @@
1#include <cstddef>
2#include <fstream>
3#include <iostream>
4#include <set>
5#include <string>
6#include <vector>
7using namespace std;
8
9vector<string>
10read_file(string_view filename)
11{
12 fstream input{ filename };
13 vector<string> data;
14
15 for ( string line; getline(input, line); ) {
16 data.emplace_back(line);
17 }
18
19 return data;
20}
21
22void
23part1(const vector<string>& data)
24{
25 set<tuple<size_t, size_t>> positions;
26
27 char max_so_far = 0;
28
29 auto update = [&](size_t row, size_t col) {
30 if ( data[row][col] > max_so_far ) {
31 positions.emplace(row, col);
32 max_so_far = data[row][col];
33 }
34 };
35
36 for ( size_t row = 0; row != data.size(); ++row ) {
37 max_so_far = 0;
38 for ( size_t col = 0; col != data[row].size(); ++col ) {
39 update(row, col);
40 }
41
42 max_so_far = 0;
43 for ( size_t col = data[row].size(); col-- > 0; ) {
44 update(row, col);
45 }
46 }
47
48 for ( size_t col = 0; col != data[0].size(); ++col ) {
49 max_so_far = 0;
50 for ( size_t row = 0; row != data.size(); ++row ) {
51 update(row, col);
52 }
53
54 max_so_far = 0;
55 for ( size_t row = data.size(); row-- > 0; ) {
56 update(row, col);
57 }
58 }
59
60 cout << positions.size() << endl;
61}
62
63int
64main()
65{
66 const auto grid = read_file("data/day08.txt");
67 part1(grid);
68}