refact: day 13
This commit is contained in:
+10
-25
@@ -73,31 +73,16 @@ fn get_valid_neighbors(
|
||||
maze: &[Vec<WallOrSpace>],
|
||||
(x, y): (usize, usize),
|
||||
) -> impl Iterator<Item = (usize, usize)> {
|
||||
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 {
|
||||
|
||||
Reference in New Issue
Block a user