From 90963247484512c244a0234d38dd891a07d90db5 Mon Sep 17 00:00:00 2001 From: alex Date: Sun, 17 Dec 2023 01:25:38 +0100 Subject: [PATCH] Day16 - part 2 --- src/day16.rs | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/src/day16.rs b/src/day16.rs index a126ab2..6bd0c72 100644 --- a/src/day16.rs +++ b/src/day16.rs @@ -191,6 +191,14 @@ impl Puzzle { res } + + pub fn reset_seen(&mut self) { + self.seen = vec![ + vec![ Seen { top: false, right: false, bottom: false, left: false }; self.width] + ; + self.height + ]; + } } fn run_part1(input: &str) -> Result> { @@ -209,7 +217,45 @@ fn run_part1(input: &str) -> Result> { fn run_part2(input: &str) -> Result> { println!("Running day16 - part 2"); - let res = 0; + + let mut puzzle = Puzzle::new(input); + + // le rayon provient de n'importe quelle case extérieure + let mut res: Vec = Vec::new(); + + // on teste le départ depuis toutes les cases verticales + (1..(puzzle.height - 1)).for_each(|i| { + let (direction, pos) = puzzle.get_next_from_left((i, 0))[0]; + puzzle.move_beam(pos, direction); + res.push(puzzle.energized_tiles()); + + puzzle.reset_seen(); + + let (direction, pos) = puzzle.get_next_from_right((i, puzzle.width - 1))[0]; + puzzle.move_beam(pos, direction); + res.push(puzzle.energized_tiles()); + + puzzle.reset_seen(); + }); + + // on teste le départ depuis toutes les cases horizontales + (1..(puzzle.width - 1)).for_each(|i| { + let (direction, pos) = puzzle.get_next_from_top((0, i))[0]; + puzzle.move_beam(pos, direction); + res.push(puzzle.energized_tiles()); + + puzzle.reset_seen(); + + let (direction, pos) = puzzle.get_next_from_bottom((puzzle.height - 1, i))[0]; + puzzle.move_beam(pos, direction); + res.push(puzzle.energized_tiles()); + + puzzle.reset_seen(); + }); + + //println!("{:?}", res); + + let res = res.into_iter().max().unwrap(); Ok(res) } @@ -237,6 +283,6 @@ mod tests { #[test] fn day16_part2() { let res = run_part2(TEXT_INPUT); - assert_eq!(0, res.unwrap()); + assert_eq!(51, res.unwrap()); } } -- 2.39.5