257 lines
11 KiB
Plaintext
257 lines
11 KiB
Plaintext
|
Advent of Code
|
|||
|
|
|||
|
--- Day 20: Donut Maze ---
|
|||
|
|
|||
|
You notice a strange pattern on the surface of Pluto and land nearby to get a closer look. Upon closer inspection, you
|
|||
|
realize you've come across one of the famous space-warping mazes of the long-lost Pluto civilization!
|
|||
|
|
|||
|
Because there isn't much space on Pluto, the civilization that used to live here thrived by inventing a method for folding
|
|||
|
spacetime. Although the technology is no longer understood, mazes like this one provide a small glimpse into the daily life
|
|||
|
of an ancient Pluto citizen.
|
|||
|
|
|||
|
This maze is shaped like a donut. Portals along the inner and outer edge of the donut can instantly teleport you from one
|
|||
|
side to the other. For example:
|
|||
|
|
|||
|
A
|
|||
|
A
|
|||
|
#######.#########
|
|||
|
#######.........#
|
|||
|
#######.#######.#
|
|||
|
#######.#######.#
|
|||
|
#######.#######.#
|
|||
|
##### B ###.#
|
|||
|
BC...## C ###.#
|
|||
|
##.## ###.#
|
|||
|
##...DE F ###.#
|
|||
|
##### G ###.#
|
|||
|
#########.#####.#
|
|||
|
DE..#######...###.#
|
|||
|
#.#########.###.#
|
|||
|
FG..#########.....#
|
|||
|
###########.#####
|
|||
|
Z
|
|||
|
Z
|
|||
|
|
|||
|
This map of the maze shows solid walls (#) and open passages (.). Every maze on Pluto has a start (the open tile next to AA)
|
|||
|
and an end (the open tile next to ZZ). Mazes on Pluto also have portals; this maze has three pairs of portals: BC, DE, and
|
|||
|
FG. When on an open tile next to one of these labels, a single step can take you to the other tile with the same label. (You
|
|||
|
can only walk on . tiles; labels and empty space are not traversable.)
|
|||
|
|
|||
|
One path through the maze doesn't require any portals. Starting at AA, you could go down 1, right 8, down 12, left 4, and
|
|||
|
down 1 to reach ZZ, a total of 26 steps.
|
|||
|
|
|||
|
However, there is a shorter path: You could walk from AA to the inner BC portal (4 steps), warp to the outer BC portal (1
|
|||
|
step), walk to the inner DE (6 steps), warp to the outer DE (1 step), walk to the outer FG (4 steps), warp to the inner FG (1
|
|||
|
step), and finally walk to ZZ (6 steps). In total, this is only 23 steps.
|
|||
|
|
|||
|
Here is a larger example:
|
|||
|
|
|||
|
A
|
|||
|
A
|
|||
|
#################.#############
|
|||
|
#.#...#...................#.#.#
|
|||
|
#.#.#.###.###.###.#########.#.#
|
|||
|
#.#.#.......#...#.....#.#.#...#
|
|||
|
#.#########.###.#####.#.#.###.#
|
|||
|
#.............#.#.....#.......#
|
|||
|
###.###########.###.#####.#.#.#
|
|||
|
#.....# A C #.#.#.#
|
|||
|
####### S P #####.#
|
|||
|
#.#...# #......VT
|
|||
|
#.#.#.# #.#####
|
|||
|
#...#.# YN....#.#
|
|||
|
#.###.# #####.#
|
|||
|
DI....#.# #.....#
|
|||
|
#####.# #.###.#
|
|||
|
ZZ......# QG....#..AS
|
|||
|
###.### #######
|
|||
|
JO..#.#.# #.....#
|
|||
|
#.#.#.# ###.#.#
|
|||
|
#...#..DI BU....#..LF
|
|||
|
#####.# #.#####
|
|||
|
YN......# VT..#....QG
|
|||
|
#.###.# #.###.#
|
|||
|
#.#...# #.....#
|
|||
|
###.### J L J #.#.###
|
|||
|
#.....# O F P #.#...#
|
|||
|
#.###.#####.#.#####.#####.###.#
|
|||
|
#...#.#.#...#.....#.....#.#...#
|
|||
|
#.#####.###.###.#.#.#########.#
|
|||
|
#...#.#.....#...#.#.#.#.....#.#
|
|||
|
#.###.#####.###.###.#.#.#######
|
|||
|
#.#.........#...#.............#
|
|||
|
#########.###.###.#############
|
|||
|
B J C
|
|||
|
U P P
|
|||
|
|
|||
|
Here, AA has no direct path to ZZ, but it does connect to AS and CP. By passing through AS, QG, BU, and JO, you can reach ZZ
|
|||
|
in 58 steps.
|
|||
|
|
|||
|
In your maze, how many steps does it take to get from the open tile marked AA to the open tile marked ZZ?
|
|||
|
|
|||
|
Your puzzle answer was 552.
|
|||
|
|
|||
|
--- Part Two ---
|
|||
|
|
|||
|
Strangely, the exit isn't open when you reach it. Then, you remember: the ancient Plutonians were famous for building
|
|||
|
recursive spaces.
|
|||
|
|
|||
|
The marked connections in the maze aren't portals: they physically connect to a larger or smaller copy of the maze.
|
|||
|
Specifically, the labeled tiles around the inside edge actually connect to a smaller copy of the same maze, and the smaller
|
|||
|
copy's inner labeled tiles connect to yet a smaller copy, and so on.
|
|||
|
|
|||
|
When you enter the maze, you are at the outermost level; when at the outermost level, only the outer labels AA and ZZ
|
|||
|
function (as the start and end, respectively); all other outer labeled tiles are effectively walls. At any other level, AA
|
|||
|
and ZZ count as walls, but the other outer labeled tiles bring you one level outward.
|
|||
|
|
|||
|
Your goal is to find a path through the maze that brings you back to ZZ at the outermost level of the maze.
|
|||
|
|
|||
|
In the first example above, the shortest path is now the loop around the right side. If the starting level is 0, then taking
|
|||
|
the previously-shortest path would pass through BC (to level 1), DE (to level 2), and FG (back to level 1). Because this is
|
|||
|
not the outermost level, ZZ is a wall, and the only option is to go back around to BC, which would only send you even deeper
|
|||
|
into the recursive maze.
|
|||
|
|
|||
|
In the second example above, there is no path that brings you to ZZ at the outermost level.
|
|||
|
|
|||
|
Here is a more interesting example:
|
|||
|
|
|||
|
Z L X W C
|
|||
|
Z P Q B K
|
|||
|
###########.#.#.#.#######.###############
|
|||
|
#...#.......#.#.......#.#.......#.#.#...#
|
|||
|
###.#.#.#.#.#.#.#.###.#.#.#######.#.#.###
|
|||
|
#.#...#.#.#...#.#.#...#...#...#.#.......#
|
|||
|
#.###.#######.###.###.#.###.###.#.#######
|
|||
|
#...#.......#.#...#...#.............#...#
|
|||
|
#.#########.#######.#.#######.#######.###
|
|||
|
#...#.# F R I Z #.#.#.#
|
|||
|
#.###.# D E C H #.#.#.#
|
|||
|
#.#...# #...#.#
|
|||
|
#.###.# #.###.#
|
|||
|
#.#....OA WB..#.#..ZH
|
|||
|
#.###.# #.#.#.#
|
|||
|
CJ......# #.....#
|
|||
|
####### #######
|
|||
|
#.#....CK #......IC
|
|||
|
#.###.# #.###.#
|
|||
|
#.....# #...#.#
|
|||
|
###.### #.#.#.#
|
|||
|
XF....#.# RF..#.#.#
|
|||
|
#####.# #######
|
|||
|
#......CJ NM..#...#
|
|||
|
###.#.# #.###.#
|
|||
|
RE....#.# #......RF
|
|||
|
###.### X X L #.#.#.#
|
|||
|
#.....# F Q P #.#.#.#
|
|||
|
###.###########.###.#######.#########.###
|
|||
|
#.....#...#.....#.......#...#.....#.#...#
|
|||
|
#####.#.###.#######.#######.###.###.#.#.#
|
|||
|
#.......#.......#.#.#.#.#...#...#...#.#.#
|
|||
|
#####.###.#####.#.#.#.#.###.###.#.###.###
|
|||
|
#.......#.....#.#...#...............#...#
|
|||
|
#############.#.#.###.###################
|
|||
|
A O F N
|
|||
|
A A D M
|
|||
|
|
|||
|
One shortest path through the maze is the following:
|
|||
|
|
|||
|
• Walk from AA to XF (16 steps)
|
|||
|
• Recurse into level 1 through XF (1 step)
|
|||
|
• Walk from XF to CK (10 steps)
|
|||
|
• Recurse into level 2 through CK (1 step)
|
|||
|
• Walk from CK to ZH (14 steps)
|
|||
|
• Recurse into level 3 through ZH (1 step)
|
|||
|
• Walk from ZH to WB (10 steps)
|
|||
|
• Recurse into level 4 through WB (1 step)
|
|||
|
• Walk from WB to IC (10 steps)
|
|||
|
• Recurse into level 5 through IC (1 step)
|
|||
|
• Walk from IC to RF (10 steps)
|
|||
|
• Recurse into level 6 through RF (1 step)
|
|||
|
• Walk from RF to NM (8 steps)
|
|||
|
• Recurse into level 7 through NM (1 step)
|
|||
|
• Walk from NM to LP (12 steps)
|
|||
|
• Recurse into level 8 through LP (1 step)
|
|||
|
• Walk from LP to FD (24 steps)
|
|||
|
• Recurse into level 9 through FD (1 step)
|
|||
|
• Walk from FD to XQ (8 steps)
|
|||
|
• Recurse into level 10 through XQ (1 step)
|
|||
|
• Walk from XQ to WB (4 steps)
|
|||
|
• Return to level 9 through WB (1 step)
|
|||
|
• Walk from WB to ZH (10 steps)
|
|||
|
• Return to level 8 through ZH (1 step)
|
|||
|
• Walk from ZH to CK (14 steps)
|
|||
|
• Return to level 7 through CK (1 step)
|
|||
|
• Walk from CK to XF (10 steps)
|
|||
|
• Return to level 6 through XF (1 step)
|
|||
|
• Walk from XF to OA (14 steps)
|
|||
|
• Return to level 5 through OA (1 step)
|
|||
|
• Walk from OA to CJ (8 steps)
|
|||
|
• Return to level 4 through CJ (1 step)
|
|||
|
• Walk from CJ to RE (8 steps)
|
|||
|
• Return to level 3 through RE (1 step)
|
|||
|
• Walk from RE to IC (4 steps)
|
|||
|
• Recurse into level 4 through IC (1 step)
|
|||
|
• Walk from IC to RF (10 steps)
|
|||
|
• Recurse into level 5 through RF (1 step)
|
|||
|
• Walk from RF to NM (8 steps)
|
|||
|
• Recurse into level 6 through NM (1 step)
|
|||
|
• Walk from NM to LP (12 steps)
|
|||
|
• Recurse into level 7 through LP (1 step)
|
|||
|
• Walk from LP to FD (24 steps)
|
|||
|
• Recurse into level 8 through FD (1 step)
|
|||
|
• Walk from FD to XQ (8 steps)
|
|||
|
• Recurse into level 9 through XQ (1 step)
|
|||
|
• Walk from XQ to WB (4 steps)
|
|||
|
• Return to level 8 through WB (1 step)
|
|||
|
• Walk from WB to ZH (10 steps)
|
|||
|
• Return to level 7 through ZH (1 step)
|
|||
|
• Walk from ZH to CK (14 steps)
|
|||
|
• Return to level 6 through CK (1 step)
|
|||
|
• Walk from CK to XF (10 steps)
|
|||
|
• Return to level 5 through XF (1 step)
|
|||
|
• Walk from XF to OA (14 steps)
|
|||
|
• Return to level 4 through OA (1 step)
|
|||
|
• Walk from OA to CJ (8 steps)
|
|||
|
• Return to level 3 through CJ (1 step)
|
|||
|
• Walk from CJ to RE (8 steps)
|
|||
|
• Return to level 2 through RE (1 step)
|
|||
|
• Walk from RE to XQ (14 steps)
|
|||
|
• Return to level 1 through XQ (1 step)
|
|||
|
• Walk from XQ to FD (8 steps)
|
|||
|
• Return to level 0 through FD (1 step)
|
|||
|
• Walk from FD to ZZ (18 steps)
|
|||
|
|
|||
|
This path takes a total of 396 steps to move from AA at the outermost layer to ZZ at the outermost layer.
|
|||
|
|
|||
|
In your maze, when accounting for recursion, how many steps does it take to get from the open tile marked AA to the open tile
|
|||
|
marked ZZ, both at the outermost layer?
|
|||
|
|
|||
|
Your puzzle answer was 6492.
|
|||
|
|
|||
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
|||
|
|
|||
|
At this point, all that is left is for you to admire your Advent calendar.
|
|||
|
|
|||
|
If you still want to see it, you can get your puzzle input.
|
|||
|
|
|||
|
References
|
|||
|
|
|||
|
Visible links
|
|||
|
. https://adventofcode.com/
|
|||
|
. https://adventofcode.com/2019/about
|
|||
|
. https://adventofcode.com/2019/events
|
|||
|
. https://adventofcode.com/2019/settings
|
|||
|
. https://adventofcode.com/2019/auth/logout
|
|||
|
. Advent of Code Supporter
|
|||
|
https://adventofcode.com/2019/support
|
|||
|
. https://adventofcode.com/2019
|
|||
|
. https://adventofcode.com/2019
|
|||
|
. https://adventofcode.com/2019/support
|
|||
|
. https://adventofcode.com/2019/sponsors
|
|||
|
. https://adventofcode.com/2019/leaderboard
|
|||
|
. https://adventofcode.com/2019/stats
|
|||
|
. https://adventofcode.com/2019/sponsors
|
|||
|
. https://en.wikipedia.org/wiki/Torus
|
|||
|
. https://adventofcode.com/2019
|
|||
|
. https://adventofcode.com/2019/day/20/input
|