From e28ff1dd22d5d5857d5da28d94156c1e9046c5d1 Mon Sep 17 00:00:00 2001 From: timeshifter Date: Wed, 1 Jul 2026 20:49:23 +0200 Subject: [PATCH] refact: day 13 --- day13/src/main.rs | 35 ++++++++++------------------------- 1 file changed, 10 insertions(+), 25 deletions(-) diff --git a/day13/src/main.rs b/day13/src/main.rs index 2550a48..0e5bff6 100644 --- a/day13/src/main.rs +++ b/day13/src/main.rs @@ -73,31 +73,16 @@ fn get_valid_neighbors( maze: &[Vec], (x, y): (usize, usize), ) -> impl Iterator { - let mut result = vec![]; - - if x == 0 && y == 0 { - result.push((x + 1, y)); - result.push((x, y + 1)); - } else if x == 0 && y != 0 { - result.push((x + 1, y)); - result.push((x, y - 1)); - result.push((x, y + 1)); - } else if x != 0 && y == 0 { - result.push((x - 1, y)); - result.push((x + 1, y)); - result.push((x, y + 1)); - } else { - // x != 0 && y != 0 - result.push((x - 1, y)); - result.push((x + 1, y)); - result.push((x, y - 1)); - result.push((x, y + 1)); - } - - result - .into_iter() - .filter(|(x, y)| *x < MAX_X && *y < MAX_Y) - .filter(|(x, y)| maze[*x][*y].is_space()) + [ + x.checked_sub(1).map(|x| (x, y)), + Some((x + 1, y)), + y.checked_sub(1).map(|y| (x, y)), + Some((x, y + 1)), + ] + .into_iter() + .flatten() + .filter(|(x, y)| *x < MAX_X && *y < MAX_Y) + .filter(|(x, y)| maze[*x][*y].is_space()) } fn calculate_equation(x: usize, y: usize) -> usize {