[rs] Solve 2022_12 part 2
This commit is contained in:
parent
a32452d138
commit
6974ee5dff
3 changed files with 22 additions and 4 deletions
|
|
@ -1,2 +1,2 @@
|
||||||
Part 1: 383
|
Part 1: 383
|
||||||
Part 2: ???
|
Part 2: 377
|
||||||
|
|
|
||||||
|
|
@ -150,8 +150,12 @@ fn path_length(steps: &Grid<Step>, start: (i32, i32), end: (i32, i32)) -> usize
|
||||||
let mut pos = end;
|
let mut pos = end;
|
||||||
let mut length = 0;
|
let mut length = 0;
|
||||||
while pos != start {
|
while pos != start {
|
||||||
pos = steps.ati(pos.0, pos.1).unwrap().prev;
|
if let Some(step) = steps.ati(pos.0, pos.1) {
|
||||||
|
pos = step.prev;
|
||||||
length += 1;
|
length += 1;
|
||||||
|
} else {
|
||||||
|
return usize::MAX;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
length
|
length
|
||||||
}
|
}
|
||||||
|
|
@ -185,4 +189,18 @@ pub fn solve(input: String) {
|
||||||
let steps = dijkstra(&grid, starti, endi);
|
let steps = dijkstra(&grid, starti, endi);
|
||||||
let part1 = path_length(&steps, starti, endi);
|
let part1 = path_length(&steps, starti, endi);
|
||||||
println!("Part 1: {part1}");
|
println!("Part 1: {part1}");
|
||||||
|
|
||||||
|
let mut part2 = usize::MAX;
|
||||||
|
for y in 0..grid.height {
|
||||||
|
for x in 0..grid.width {
|
||||||
|
if *grid.at(x, y).unwrap() == 0 {
|
||||||
|
let starti = (x as i32, y as i32);
|
||||||
|
let endi = (end.0 as i32, end.1 as i32);
|
||||||
|
let steps = dijkstra(&grid, starti, endi);
|
||||||
|
let length = path_length(&steps, starti, endi);
|
||||||
|
part2 = part2.min(length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println!("Part 2: {part2}");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
Part 1: 31
|
Part 1: 31
|
||||||
Part 2: ???
|
Part 2: 29
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue