Mercurial > repos > other > adventofcode2023
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 |
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. |