diff --git a/y2015/src/bin/d7.rs b/y2015/src/bin/d7.rs index 4c97378..f35d80b 100644 --- a/y2015/src/bin/d7.rs +++ b/y2015/src/bin/d7.rs @@ -16,5 +16,5 @@ fn part1() { fn part2() { let root = env!("CARGO_MANIFEST_DIR"); let content = fs::read_to_string(format!("{root}/resources/7_input.txt")).unwrap(); - println!("{:#?}", d7::process_part2(&content)); + println!("{}", d7::process_part2(&content).get("a").unwrap()); } diff --git a/y2015/src/days/d7.rs b/y2015/src/days/d7.rs index 9ebaca6..9ddc88a 100644 --- a/y2015/src/days/d7.rs +++ b/y2015/src/days/d7.rs @@ -81,7 +81,24 @@ fn set_wire( panic!("Should not happen"); } -pub fn process_part2(_input: &str) {} +pub fn process_part2(input: &str) -> HashMap { + let mut wires = HashMap::new(); + let mut instructions = HashMap::new(); + for instruction in input.lines() { + let (expression, wire) = instruction.split_once(" -> ").unwrap(); + instructions.insert(wire.to_string(), expression.to_string()); + } + for wire in instructions.keys() { + set_wire(wire.to_string(), &mut wires, &instructions); + } + let new_b = wires.get("a").unwrap(); + instructions.insert("b".to_string(), new_b.to_string()); + let mut wires = HashMap::new(); + for wire in instructions.keys() { + set_wire(wire.to_string(), &mut wires, &instructions); + } + wires +} #[cfg(test)] mod tests_7 {