summaryrefslogtreecommitdiff
path: root/2023/14/src/part1.cpp
diff options
context:
space:
mode:
authorFederico Igne <undyamon@disroot.org>2023-12-14 15:51:22 +0100
committerFederico Igne <undyamon@disroot.org>2023-12-14 15:51:22 +0100
commitfd2077171f5b0b1a9f3bb4224865f0d5c84c21ae (patch)
tree9f6a9f4617dbbbc5e61a382458ae5d6f95776c9d /2023/14/src/part1.cpp
parenta388690e255427aa28a2fd4364e094a10bde3382 (diff)
downloadaoc-fd2077171f5b0b1a9f3bb4224865f0d5c84c21ae.tar.gz
aoc-fd2077171f5b0b1a9f3bb4224865f0d5c84c21ae.zip
aoc(2314): Parabolic Reflector Dish
Diffstat (limited to '2023/14/src/part1.cpp')
-rw-r--r--2023/14/src/part1.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/2023/14/src/part1.cpp b/2023/14/src/part1.cpp
new file mode 100644
index 0000000..c2179b7
--- /dev/null
+++ b/2023/14/src/part1.cpp
@@ -0,0 +1,41 @@
1#include <iostream>
2#include <fstream>
3#include <vector>
4
5std::vector<std::string> parse(const char* file)
6{
7 std::vector<std::string> v;
8 if (std::ifstream input{ file }; input.is_open())
9 {
10 std::string line;
11 while (not std::getline(input,line).eof())
12 {
13 v.push_back(std::move(line));
14 }
15 }
16 return v;
17}
18
19int main(int argc, char* argv[])
20{
21 int answer{};
22
23 auto v = parse(argv[1]);
24 for (int c = 0; c < v.size(); ++c)
25 {
26 int floor = v.size();
27 for (int r = 0; r < v.size(); ++r)
28 {
29 switch (v[r][c])
30 {
31 case '#':
32 floor = v.size() - r - 1;
33 break;
34 case 'O':
35 answer += floor--;
36 }
37 }
38 }
39 std::cout << answer << std::endl;
40 return 0;
41}