From b5e867fa1e9e542ed3a6d1699c6680a78ba3f781 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Thu, 5 Dec 2024 23:06:15 +0100 Subject: aoc 2024, day5 --- 2024/src/day05.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/2024/src/day05.cpp b/2024/src/day05.cpp index 37d74c6..3ace14d 100644 --- a/2024/src/day05.cpp +++ b/2024/src/day05.cpp @@ -40,6 +40,7 @@ read_file(string_view filename) for ( string line; getline(input, line); ) { pages.emplace_back(split(line)); } + return { rules, pages }; } @@ -56,10 +57,10 @@ is_valid(const vector>& rules, const vector& page) return get<0>(rule) == num; }; - for ( auto it = find_if(rules.begin(), rules.end(), pred); it != rules.end(); it = find_if(it + 1, rules.end(), pred) ) { - const auto foo = get<1>(*it); - - if ( processed.contains(foo) ) { + for ( auto it = find_if(rules.begin(), rules.end(), pred); + it != rules.end(); + it = find_if(it + 1, rules.end(), pred) ) { + if ( processed.contains(get<1>(*it)) ) { invalid = true; } } @@ -84,13 +85,15 @@ part2(const vector>& rules, const vector>& pages) { long sum = 0; for ( auto page: pages ) { - if ( !is_valid(rules, page) ) { - ranges::sort(page, [&](auto lhs, auto rhs) -> bool { - return ranges::find(rules, make_tuple(lhs, rhs)) != rules.end(); - }); - - sum += page.at(page.size() / 2); + if ( is_valid(rules, page) ) { + continue; } + + ranges::sort(page, [&rules](auto lhs, auto rhs) { + return ranges::find(rules, make_tuple(lhs, rhs)) != rules.end(); + }); + + sum += page.at(page.size() / 2); } cout << sum << endl; } -- cgit v1.3