From a8f11c0a8470c4e6b67e70219986712cd70d0de2 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Sun, 12 Jan 2025 12:10:42 +0100 Subject: aoc 2016, day 3 --- 2016/src/day02.cpp | 1 - 2016/src/day03.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 2016/src/day03.cpp (limited to '2016/src') 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) fstream input{ filename }; vector lines; - vector> result; for ( string line; getline(input, line); ) { lines.emplace_back(line); } 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 @@ +#include +#include +#include +#include +#include +#include + +using namespace std; + +vector> +read_file(string_view filename) +{ + fstream input{ filename }; + vector> result; + + for ( string line; getline(input, line); ) { + stringstream sstr{ line }; + vector nums{ istream_iterator{ sstr }, {} }; + + result.push_back({ nums.at(0), nums.at(1), nums.at(2) }); + } + + return result; +} + +bool +is_triangle(array set) +{ + ranges::sort(set); + return set[0] + set[1] > set[2]; +} + +void +part1(const vector>& data) +{ + cout << ranges::count_if(data, is_triangle) << endl; +} + +void +part2(const vector>& data) +{ + long sum = 0; + for ( size_t row = 0; row < data.size(); row += 3 ) { + sum += is_triangle({ data[row][0], data[row + 1][0], data[row + 2][0] }) ? 1 : 0; + sum += is_triangle({ data[row][1], data[row + 1][1], data[row + 2][1] }) ? 1 : 0; + sum += is_triangle({ data[row][2], data[row + 1][2], data[row + 2][2] }) ? 1 : 0; + } + cout << sum << endl; +} + +int +main() +{ + auto data = read_file("data/day03.txt"); + part1(data); + part2(data); +} -- cgit v1.3