From b15c097c3c5169dcaf36ef1951b4949041c9619a Mon Sep 17 00:00:00 2001 From: Justin Wernick Date: Thu, 21 Dec 2023 09:49:23 +0200 Subject: Day 20, Fix up connecting the rx fake module --- 2023/src/bin/day_20.rs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/2023/src/bin/day_20.rs b/2023/src/bin/day_20.rs index 0829365..070093a 100644 --- a/2023/src/bin/day_20.rs +++ b/2023/src/bin/day_20.rs @@ -13,7 +13,6 @@ fn main() -> Result<(), Box> { let input = fs::read_to_string("inputs/day_20.txt")?; let circuit = Circuit::parser(&input).unwrap().1; - dbg!(&circuit); { let mut circuit = circuit.clone(); let mut pulse_tracker = PulseCounter::default(); @@ -30,7 +29,7 @@ fn main() -> Result<(), Box> { circuit .modules .iter() - .find(|m| m.id == ModuleId::from_short_alphanumeric("rx").unwrap()) + .find(|m| m.id == ModuleId::rx()) .unwrap() .index, ); @@ -135,7 +134,16 @@ impl Circuit { .iter() .enumerate() .find(|(_, out)| &out.id == out_id) - .map_or(sink_index, |(index, _)| index + 1) + .map_or_else( + || { + if out_id == &ModuleId::rx() { + rx_sink_index + } else { + sink_index + } + }, + |(index, _)| index + 1, + ) }) .collect(), state: module.state.clone(), @@ -148,7 +156,7 @@ impl Circuit { state: ModuleState::Sink, }); modules.push(Module { - id: ModuleId::from_short_alphanumeric("rx").unwrap(), + id: ModuleId::rx(), index: rx_sink_index, outs: Vec::new(), state: ModuleState::Sink, @@ -304,6 +312,10 @@ impl ModuleId { ModuleId(u32::MAX) } + fn rx() -> ModuleId { + ModuleId::from_short_alphanumeric("rx").unwrap() + } + fn from_short_alphanumeric(s: &str) -> Result { u32::from_str_radix(s, 36).map(ModuleId) } -- cgit v1.2.3