From e6622cbffb27b6931198baed3641684a52135d1d Mon Sep 17 00:00:00 2001 From: Johannes Date: Sat, 2 Nov 2024 16:55:27 +0100 Subject: [PATCH] day 19 b --- src/day19.rs | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/src/day19.rs b/src/day19.rs index 59d5cc3..03bd909 100644 --- a/src/day19.rs +++ b/src/day19.rs @@ -1,4 +1,4 @@ -use std::collections::{HashSet, VecDeque}; +use std::collections::HashSet; use aoc_runner_derive::{aoc, aoc_generator}; @@ -49,26 +49,12 @@ fn starts(a: &str, pattern: &str) -> Vec { } #[aoc(day19, part2)] -fn part2((transformations, target): &(Vec, String)) -> usize { - search("e", transformations, target) -} - -fn search(base: &str, transformations: &[Transformation], target: &str) -> usize { - let mut seen = HashSet::new(); - seen.insert(base.to_string()); - let mut queue = VecDeque::new(); - queue.push_back((base.to_string(), 0)); - while let Some((from, depth)) = queue.pop_front() { - for possibility in possibilities(transformations, &from) { - if possibility == target { - return depth + 1; - } - if seen.insert(possibility.clone()) { - queue.push_back((possibility, depth + 1)); - } - } - } - unreachable!("No solution was found"); +fn part2((_transformations, target): &(Vec, String)) -> usize { + let l = target.chars().filter(|c| c.is_uppercase()).count(); + let cy = target.chars().filter(|c| *c == 'Y').count(); + let crn = target.split("Rn").count() - 1; + let car = target.split("Ar").count() - 1; + l - crn - car - 2 * cy - 1 } #[cfg(test)]