diff --git a/years/2025/src/day_11.rs b/years/2025/src/day_11.rs index b8f5485..bbb9362 100644 --- a/years/2025/src/day_11.rs +++ b/years/2025/src/day_11.rs @@ -5,11 +5,15 @@ use advent_core::{day_stuff, ex_for_day, Day}; pub struct Day11; type Graph = HashMap>; -type Seen = HashMap<(String, bool, bool), usize>; +type Seen<'a> = HashMap<(&'a String, bool, bool), usize>; -fn all_paths_to_out(node: &String, graph: &Graph, seen: &mut HashMap) -> usize { - if let Some(memo) = seen.get(node).copied() { - memo +fn all_paths_to_out<'a>( + node: &'a String, + graph: &'a Graph, + seen: &mut HashMap<&'a String, usize>, +) -> usize { + if let Some(memo) = seen.get(&node) { + *memo } else if let Some(nexts) = graph.get(node) { let mut amnt = 0; for next in nexts.iter() { @@ -19,22 +23,22 @@ fn all_paths_to_out(node: &String, graph: &Graph, seen: &mut HashMap( + node: &'a String, saw_dac: bool, saw_fft: bool, - graph: &Graph, - seen: &mut Seen, + graph: &'a Graph, + seen: &mut Seen<'a>, ) -> usize { - if let Some(memo) = seen.get(&(node.clone(), saw_dac, saw_fft)).copied() { - memo + if let Some(memo) = seen.get(&(node, saw_dac, saw_fft)) { + *memo } else if let Some(nexts) = graph.get(node) { let mut amnt = 0; for next in nexts.iter() { @@ -52,7 +56,7 @@ fn all_paths_to_out_with_constraints( ); } } - seen.insert((node.clone(), saw_dac, saw_fft), amnt); + seen.insert((node, saw_dac, saw_fft), amnt); amnt } else { 0