From 12ba4504a7bbf3449552e37e8f28920e95b890c0 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Mon, 23 Dec 2024 10:47:46 +0100 Subject: aoc 2024, day 23, part 1 --- 2024/src/day23.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 2024/src/day23.cpp (limited to '2024/src') diff --git a/2024/src/day23.cpp b/2024/src/day23.cpp new file mode 100644 index 0000000..45d6d28 --- /dev/null +++ b/2024/src/day23.cpp @@ -0,0 +1,65 @@ +#include +#include +#include +#include +#include +#include +#include +using namespace std; + +vector +split(const string& line, char sep = ' ') +{ + vector parts; + stringstream input{ line }; + + for ( string part; getline(input, part, sep); ) { + parts.emplace_back(part); + } + + return parts; +} + +map> +read_file(string_view filename) +{ + fstream input{ filename }; + map> data; + + for ( string line; getline(input, line); ) { + const auto parts = split(line, '-'); + const auto& lhs = parts[0]; + const auto& rhs = parts[1]; + data[lhs].insert(rhs); + data[rhs].insert(lhs); + } + + return data; +} + +void +part1(const map>& nodes) +{ + set> connected; + + for ( const auto& [node0, links]: nodes ) { + for ( const auto& node1: links ) { + for ( const auto& node2: nodes.at(node1) ) { + if ( node0 != node2 and nodes.at(node2).contains(node0) ) { + if ( node0.starts_with('t') || node1.starts_with('t') || node2.starts_with('t') ) { + connected.insert({ node0, node1, node2 }); + } + } + } + } + } + + cout << connected.size() << endl; +} + +int +main() +{ + auto data = read_file("data/day23.txt"); + part1(data); +} -- cgit v1.3