From a448ccb872673d5c4ecbf3622a1f47bdd118e572 Mon Sep 17 00:00:00 2001 From: Kyle Shores Date: Thu, 19 Dec 2024 22:39:33 -0600 Subject: [PATCH] combining parts 1 and 2 --- 2024/src/day19.cpp | 33 ++------------------------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/2024/src/day19.cpp b/2024/src/day19.cpp index f9e9881..35e02f5 100644 --- a/2024/src/day19.cpp +++ b/2024/src/day19.cpp @@ -14,32 +14,6 @@ struct Data std::vector designs; }; -bool check_design(std::string_view design, const Trie &t, std::unordered_map &cache) -{ - if (design.empty()) - { - return true; - } - - if (cache.count(design)) - { - return cache[design]; - } - - std::vector match = t.search(design); - for (auto m : match) - { - if (check_design(design.substr(m), t, cache)) - { - cache[design] = true; - return true; - } - } - - cache[design] = false; - return false; -} - int64_t count_ways(std::string_view design, const Trie &t, std::unordered_map &cache) { if (design.empty()) @@ -66,7 +40,7 @@ int64_t count_ways(std::string_view design, const Trie &t, std::unordered_map cache; + std::unordered_map cache; for (const auto &pattern : data.patterns) { t.insert(pattern); @@ -75,10 +49,7 @@ int part1(const Data &data) int possible = 0; for (auto &design : data.designs) { - if (check_design(design, t, cache)) - { - ++possible; - } + possible += count_ways(design, t, cache) > 0 ? 1 : 0; } return possible; }