annotate day16.txt @ 25:79dc2ba41df2

Copy a Dijkstra's Algorithm implementation Gets us the shorted route but doesn't handle the additional "keep turning" conditions
author IBBoard <dev@ibboard.co.uk>
date Sun, 17 Dec 2023 10:32:05 +0000
parents ad73a2ff3d06
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
1 --- Day 16: The Floor Will Be Lava ---
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
2
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
3 A laser/mirror problem - "/" and "\" are mirrors that reflect 90°.
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
4 "-" and "|" are splitters - transparent in the same orientation,
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
5 but TWO beams go at 90° if hit against the flat edge.
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6 "." is empty space.
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
7
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
8 The laser starts in the top-right.
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
9
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
10 For an example map:
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
11
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
12 .|...\....
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
13 |.-.\.....
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
14 .....|-...
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
15 ........|.
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
16 ..........
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
17 .........\
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
18 ..../.\\..
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
19 .-.-/..|..
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
20 .|....-|.\
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
21 ..//.|....
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
22
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
23 The laser goes:
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
24
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
25 >|<<<\....
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
26 |v-.\^....
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
27 .v...|->>>
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
28 .v...v^.|.
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
29 .v...v^...
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
30 .v...v^..\
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
31 .v../2\\..
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
32 <->-/vv|..
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
33 .|<<<2-|.\
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
34 .v//.|.v..
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
35
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
36 Every space that the laser goes through is "energised", which gives:
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
37
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
38 ######....
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
39 .#...#....
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
40 .#...#####
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
41 .#...##...
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
42 .#...##...
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
43 .#...##...
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
44 .#..####..
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
45 ########..
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
46 .#######..
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
47 .#...#.#..
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
48
ad73a2ff3d06 Implement Day 15 part 1 and all of Day 16
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
49 The count of energised spaces is 46.