From 3a7ad6ec3c4ab88fa59ca613cbbfc8531d23cc58 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Sun, 28 Apr 2024 11:48:01 +0200 Subject: day 4, advent of code 2022 --- 2022/src/day04.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 2022/src/day04.cpp (limited to '2022/src') diff --git a/2022/src/day04.cpp b/2022/src/day04.cpp new file mode 100644 index 0000000..e3e4cd1 --- /dev/null +++ b/2022/src/day04.cpp @@ -0,0 +1,50 @@ +#include +#include +#include +#include +#include +#include +using namespace std; + +vector> +read_file(string_view filename) +{ + fstream input{ filename }; + vector> data; + + for ( string line; getline(input, line); ) { + int a, b, c, d; + (void) sscanf(line.c_str(), "%d-%d,%d-%d", &a, &b, &c, &d); + data.emplace_back(a, b, c, d); + } + + return data; +} + +void +part1(const vector>& data) +{ + auto sum = count_if(begin(data), end(data), [](auto& tuple) { + const auto [a, b, c, d] = tuple; + return (a <= c && b >= d) || (c <= a && d >= b); + }); + cout << sum << endl; +} + +void +part2(const vector>& data) +{ + auto sum = count_if(begin(data), end(data), [](auto& tuple) { + const auto [a, b, c, d] = tuple; + return max(a, c) <= min(b, d); + }); + cout << sum << endl; +} + +int +main() +{ + const auto data = read_file("data/day04.txt"); + part1(data); + part2(data); +} -- cgit v1.3