diff --git a/src/bin/16.rs b/src/bin/16.rs index 88c31c0..8bce445 100644 --- a/src/bin/16.rs +++ b/src/bin/16.rs @@ -52,8 +52,8 @@ impl Pos { struct State { map: HashMap, start: Pos, - end: Pos, - size: Pos, + // end: Pos, + // size: Pos, } #[derive(Debug, Copy, Clone, PartialEq, Eq)] @@ -116,13 +116,12 @@ impl Path { impl TryFrom<&str> for State { type Error = (); fn try_from(input: &str) -> Result { - let input = input.lines().collect::>(); - let size = Pos { - x: input[0].len(), - y: input.len(), - }; - let input: Vec<(Pos, char)> = input - .iter() + // let size = Pos { + // x: input[0].len(), + // y: input.len(), + // }; + // let input: Vec<(Pos, char)> = input + let input: Vec<_> = input.lines() .enumerate() .flat_map(|(y, l)| { l.chars().enumerate().filter_map(move |(x, c)| { @@ -135,7 +134,7 @@ impl TryFrom<&str> for State { }) .collect(); let start = input.iter().find(|(_, c)| *c == 'S').ok_or(())?.0.clone(); - let end = input.iter().find(|(_, c)| *c == 'E').ok_or(())?.0.clone(); + // let end = input.iter().find(|(_, c)| *c == 'E').ok_or(())?.0.clone(); let mut map = HashMap::new(); for (k, v) in input.into_iter() { map.insert(k, v); @@ -143,8 +142,8 @@ impl TryFrom<&str> for State { Ok(State { map, start, - end, - size, + // end, + // size, }) } } @@ -176,24 +175,24 @@ impl State { all_paths } - fn print_path(&self, path: &Path) { - println!(); - println!("Path score: {}", path.score()); - for y in 0..self.size.y { - for x in 0..self.size.x { - let p = Pos { x, y }; - if path.have_visited(&p) { - print!("o"); - } else if self.map.contains_key(&p) { - print!(" "); - } else { - print!("#"); - } - } - println!(); - } - println!() - } + // fn print_path(&self, path: &Path) { + // println!(); + // println!("Path score: {}", path.score()); + // for y in 0..self.size.y { + // for x in 0..self.size.x { + // let p = Pos { x, y }; + // if path.have_visited(&p) { + // print!("o"); + // } else if self.map.contains_key(&p) { + // print!(" "); + // } else { + // print!("#"); + // } + // } + // println!(); + // } + // println!() + // } } pub fn part_one(input: &str) -> Option { @@ -204,7 +203,7 @@ pub fn part_one(input: &str) -> Option { st.get_paths().iter().map(|p| p.score()).min() } -pub fn part_two(input: &str) -> Option { +pub fn part_two(_input: &str) -> Option { None } diff --git a/src/bin/17.rs b/src/bin/17.rs index 9cf6cb5..41c8dd6 100644 --- a/src/bin/17.rs +++ b/src/bin/17.rs @@ -18,7 +18,7 @@ impl State { ); let two: i32 = 2; let res = self.registers[0].checked_div(two.pow(combo as u32))?; - let mut new_registers = self.registers.clone(); + let mut new_registers = self.registers; new_registers[reg] = res; Some(Self { registers: new_registers, @@ -30,7 +30,7 @@ impl State { fn bxl(&self, combo: i32) -> Option { println!("BXL reg 1 ^ {} => reg 1", combo); let res = self.registers[1] ^ combo; - let mut new_registers = self.registers.clone(); + let mut new_registers = self.registers; new_registers[1] = res; Some(Self { registers: new_registers, @@ -41,7 +41,7 @@ impl State { fn bst(&self, combo: i32) -> Option { println!("BST {} % 8 => reg 1", combo); - let mut new_registers = self.registers.clone(); + let mut new_registers = self.registers; new_registers[1] = combo % 8; Some(Self { registers: new_registers, @@ -68,7 +68,7 @@ impl State { fn bxc(&self) -> Option { println!("BXC reg 1 ^ reg 2 => reg 1"); - let mut new_registers = self.registers.clone(); + let mut new_registers = self.registers; new_registers[1] = self.registers[1] ^ self.registers[2]; Some(Self { registers: new_registers, @@ -101,16 +101,13 @@ impl State { } let opcode = self.memory.get(self.ptr).unwrap(); let combo = *self.memory.get(self.ptr + 1).unwrap(); - if combo < 0 || combo > 6 { - return None; - } let combo_value = match combo { - 0..=3 => combo, - 4 => self.registers[0], - 5 => self.registers[1], - 6 => self.registers[2], - _ => panic!(), - }; + 0..=3 => Some(combo), + 4 => Some(self.registers[0]), + 5 => Some(self.registers[1]), + 6 => Some(self.registers[2]), + _ => None, + }?; match opcode { 0 => self.dv(0, combo_value), 1 => self.bxl(combo_value), @@ -170,7 +167,7 @@ pub fn part_one(input: &str) -> Option { State::try_from(input).ok().map(|s| s.run().get_output()) } -pub fn part_two(input: &str) -> Option { +pub fn part_two(_input: &str) -> Option { None }