aboutsummaryrefslogtreecommitdiff
path: root/2016
diff options
context:
space:
mode:
authorThomas Schmucker <ts@its1.de>2025-01-12 12:10:42 +0100
committerThomas Schmucker <ts@its1.de>2025-01-12 12:10:42 +0100
commita8f11c0a8470c4e6b67e70219986712cd70d0de2 (patch)
tree889317cbbbc5f4670d29b9d7e66aefaa99923ee5 /2016
parent528c58bf205864e2797e2027fa9691c5f0ba1249 (diff)
downloadadvent-of-code-a8f11c0a8470c4e6b67e70219986712cd70d0de2.tar.gz
advent-of-code-a8f11c0a8470c4e6b67e70219986712cd70d0de2.tar.bz2
advent-of-code-a8f11c0a8470c4e6b67e70219986712cd70d0de2.zip
aoc 2016, day 3
Diffstat (limited to '2016')
-rw-r--r--2016/src/day02.cpp1
-rw-r--r--2016/src/day03.cpp57
2 files changed, 57 insertions, 1 deletions
diff --git a/2016/src/day02.cpp b/2016/src/day02.cpp
index ad625d5..612de28 100644
--- a/2016/src/day02.cpp
+++ b/2016/src/day02.cpp
@@ -13,7 +13,6 @@ read_file(string_view filename)
13 fstream input{ filename }; 13 fstream input{ filename };
14 vector<string> lines; 14 vector<string> lines;
15 15
16 vector<tuple<char, long>> result;
17 for ( string line; getline(input, line); ) { 16 for ( string line; getline(input, line); ) {
18 lines.emplace_back(line); 17 lines.emplace_back(line);
19 } 18 }
diff --git a/2016/src/day03.cpp b/2016/src/day03.cpp
new file mode 100644
index 0000000..fad26b8
--- /dev/null
+++ b/2016/src/day03.cpp
@@ -0,0 +1,57 @@
1#include <array>
2#include <fstream>
3#include <iostream>
4#include <sstream>
5#include <string>
6#include <vector>
7
8using namespace std;
9
10vector<array<long, 3>>
11read_file(string_view filename)
12{
13 fstream input{ filename };
14 vector<array<long, 3>> result;
15
16 for ( string line; getline(input, line); ) {
17 stringstream sstr{ line };
18 vector<long> nums{ istream_iterator<long>{ sstr }, {} };
19
20 result.push_back({ nums.at(0), nums.at(1), nums.at(2) });
21 }
22
23 return result;
24}
25
26bool
27is_triangle(array<long, 3> set)
28{
29 ranges::sort(set);
30 return set[0] + set[1] > set[2];
31}
32
33void
34part1(const vector<array<long, 3>>& data)
35{
36 cout << ranges::count_if(data, is_triangle) << endl;
37}
38
39void
40part2(const vector<array<long, 3>>& data)
41{
42 long sum = 0;
43 for ( size_t row = 0; row < data.size(); row += 3 ) {
44 sum += is_triangle({ data[row][0], data[row + 1][0], data[row + 2][0] }) ? 1 : 0;
45 sum += is_triangle({ data[row][1], data[row + 1][1], data[row + 2][1] }) ? 1 : 0;
46 sum += is_triangle({ data[row][2], data[row + 1][2], data[row + 2][2] }) ? 1 : 0;
47 }
48 cout << sum << endl;
49}
50
51int
52main()
53{
54 auto data = read_file("data/day03.txt");
55 part1(data);
56 part2(data);
57}