Skip to content

Commit fb46cc6

Browse files
2018: Day 20 - Generalize solution
Graph must be bi-directional to find the shortest paths for every input.
1 parent 667d5db commit fb46cc6

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

2018/day20/src/main.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ fn main() {
3030
.chars()
3131
.collect::<Vec<_>>();
3232

33-
// create a map (i.e. a graph of rooms and their neighbors)
33+
// create a map (i.e. a bi-directional graph of rooms and their neighbors)
3434
let mut rooms: HashMap<(i32, i32), HashSet<(i32, i32)>> = HashMap::new();
3535

3636
let mut queue = VecDeque::new();
@@ -53,21 +53,25 @@ fn main() {
5353
// door between current room and next one
5454
'N' => {
5555
rooms.entry((s.x, s.y)).or_default().insert((s.x, s.y - 1));
56+
rooms.entry((s.x, s.y - 1)).or_default().insert((s.x, s.y));
5657
s.i += 1;
5758
s.y -= 1;
5859
}
5960
'S' => {
6061
rooms.entry((s.x, s.y)).or_default().insert((s.x, s.y + 1));
62+
rooms.entry((s.x, s.y + 1)).or_default().insert((s.x, s.y));
6163
s.i += 1;
6264
s.y += 1;
6365
}
6466
'W' => {
6567
rooms.entry((s.x, s.y)).or_default().insert((s.x - 1, s.y));
68+
rooms.entry((s.x - 1, s.y)).or_default().insert((s.x, s.y));
6669
s.i += 1;
6770
s.x -= 1;
6871
}
6972
'E' => {
7073
rooms.entry((s.x, s.y)).or_default().insert((s.x + 1, s.y));
74+
rooms.entry((s.x + 1, s.y)).or_default().insert((s.x, s.y));
7175
s.i += 1;
7276
s.x += 1;
7377
}

0 commit comments

Comments
 (0)