From b68f250e3a88113362eeb628db5e1f9c3b7bfc5b Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Tue, 9 Jan 2024 23:23:29 +0100 Subject: even more compact code --- 2023/src/day19.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to '2023/src/day19.cpp') diff --git a/2023/src/day19.cpp b/2023/src/day19.cpp index 192e066..78306c9 100644 --- a/2023/src/day19.cpp +++ b/2023/src/day19.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -83,18 +84,16 @@ part1(map>, string>> ru void part2(map>, string>> rules) { - function>, string)> count = [&](map> ranges, const string& name) -> long { + function>, string)> count = [&](auto ranges, const string& name) -> long { if ( name == "R" ) { return 0; } if ( name == "A" ) { - long result = 1; - for ( const auto& range: ranges ) { - const auto [lo, hi] = range.second; - result *= hi - lo + 1; - } - return result; + return accumulate(ranges.begin(), ranges.end(), 1L, [](auto lhs, auto rhs) { + const auto [lo, hi] = rhs.second; + return lhs * (hi - lo + 1); + }); } const auto [sub_rules, fallback] = rules[name]; -- cgit v1.3