2016-12-17 16:00:39 +00:00
|
|
|
|
Advent of Code
|
|
|
|
|
|
|
|
|
|
--- Day 17: Two Steps Forward ---
|
|
|
|
|
|
2018-03-15 16:24:23 +00:00
|
|
|
|
You're trying to access a secure vault protected by a 4x4 grid of small
|
|
|
|
|
rooms connected by doors. You start in the top-left room (marked S), and you
|
|
|
|
|
can access the vault (marked V) once you reach the bottom-right room:
|
2016-12-17 16:00:39 +00:00
|
|
|
|
|
|
|
|
|
#########
|
|
|
|
|
#S| | | #
|
|
|
|
|
#-#-#-#-#
|
|
|
|
|
# | | | #
|
|
|
|
|
#-#-#-#-#
|
|
|
|
|
# | | | #
|
|
|
|
|
#-#-#-#-#
|
|
|
|
|
# | | |
|
|
|
|
|
####### V
|
|
|
|
|
|
|
|
|
|
Fixed walls are marked with #, and doors are marked with - or |.
|
|
|
|
|
|
2018-03-15 16:24:23 +00:00
|
|
|
|
The doors in your current room are either open or closed (and locked) based
|
|
|
|
|
on the hexadecimal MD5 hash of a passcode (your puzzle input) followed by a
|
|
|
|
|
sequence of uppercase characters representing the path you have taken so far
|
|
|
|
|
(U for up, D for down, L for left, and R for right).
|
|
|
|
|
|
|
|
|
|
Only the first four characters of the hash are used; they represent,
|
|
|
|
|
respectively, the doors up, down, left, and right from your current
|
|
|
|
|
position. Any b, c, d, e, or f means that the corresponding door is open;
|
|
|
|
|
any other character (any number or a) means that the corresponding door is
|
|
|
|
|
closed and locked.
|
|
|
|
|
|
|
|
|
|
To access the vault, all you need to do is reach the bottom-right room;
|
|
|
|
|
reaching this room opens the vault and all doors in the maze.
|
|
|
|
|
|
|
|
|
|
For example, suppose the passcode is hijkl. Initially, you have taken no
|
|
|
|
|
steps, and so your path is empty: you simply find the MD5 hash of hijkl
|
|
|
|
|
alone. The first four characters of this hash are ced9, which indicate that
|
|
|
|
|
up is open (c), down is open (e), left is open (d), and right is closed and
|
|
|
|
|
locked (9). Because you start in the top-left corner, there are no "up" or
|
2016-12-17 16:00:39 +00:00
|
|
|
|
"left" doors to be open, so your only choice is down.
|
|
|
|
|
|
2018-03-15 16:24:23 +00:00
|
|
|
|
Next, having gone only one step (down, or D), you find the hash of hijklD.
|
|
|
|
|
This produces f2bc, which indicates that you can go back up, left (but
|
|
|
|
|
that's a wall), or right. Going right means hashing hijklDR to get 5745 -
|
|
|
|
|
all doors closed and locked. However, going up instead is worthwhile: even
|
|
|
|
|
though it returns you to the room you started in, your path would then be
|
|
|
|
|
DU, opening a different set of doors.
|
2016-12-17 16:00:39 +00:00
|
|
|
|
|
2018-03-15 16:24:23 +00:00
|
|
|
|
After going DU (and then hashing hijklDU to get 528e), only the right door
|
|
|
|
|
is open; after going DUR, all doors lock. (Fortunately, your actual passcode
|
|
|
|
|
is not hijkl).
|
2016-12-17 16:00:39 +00:00
|
|
|
|
|
2018-03-15 16:24:23 +00:00
|
|
|
|
Passcodes actually used by Easter Bunny Vault Security do allow access to
|
|
|
|
|
the vault if you know the right path. For example:
|
2016-12-17 16:00:39 +00:00
|
|
|
|
|
|
|
|
|
• If your passcode were ihgpwlah, the shortest path would be DDRRRD.
|
|
|
|
|
• With kglvqrro, the shortest path would be DDUDRLRRUDRD.
|
|
|
|
|
• With ulqzkmiv, the shortest would be DRURDRUDDLLDLUURRDULRLDUUDDDRR.
|
|
|
|
|
|
2018-03-15 16:24:23 +00:00
|
|
|
|
Given your vault's passcode, what is the shortest path (the actual path, not
|
|
|
|
|
just the length) to reach the vault?
|
2016-12-17 16:00:39 +00:00
|
|
|
|
|
2018-03-15 16:24:23 +00:00
|
|
|
|
Your puzzle answer was DRRDRLDURD.
|
2016-12-17 16:00:39 +00:00
|
|
|
|
|
|
|
|
|
--- Part Two ---
|
|
|
|
|
|
2018-03-15 16:24:23 +00:00
|
|
|
|
You're curious how robust this security solution really is, and so you
|
|
|
|
|
decide to find longer and longer paths which still provide access to the
|
|
|
|
|
vault. You remember that paths always end the first time they reach the
|
|
|
|
|
bottom-right room (that is, they can never pass through it, only end in it).
|
2016-12-17 16:00:39 +00:00
|
|
|
|
|
|
|
|
|
For example:
|
|
|
|
|
|
|
|
|
|
• If your passcode were ihgpwlah, the longest path would take 370 steps.
|
|
|
|
|
• With kglvqrro, the longest path would be 492 steps long.
|
|
|
|
|
• With ulqzkmiv, the longest path would be 830 steps long.
|
|
|
|
|
|
|
|
|
|
What is the length of the longest path that reaches the vault?
|
|
|
|
|
|
2018-03-15 16:24:23 +00:00
|
|
|
|
Your puzzle answer was 618.
|
2016-12-17 16:00:39 +00:00
|
|
|
|
|
|
|
|
|
References
|
|
|
|
|
|
|
|
|
|
Visible links
|
|
|
|
|
. http://adventofcode.com/
|
|
|
|
|
. http://adventofcode.com/2016/about
|
|
|
|
|
. http://adventofcode.com/2016/support
|
|
|
|
|
. http://adventofcode.com/2016/events
|
|
|
|
|
. http://adventofcode.com/2016/settings
|
|
|
|
|
. http://adventofcode.com/2016/auth/logout
|
|
|
|
|
. http://adventofcode.com/2016
|
|
|
|
|
. http://adventofcode.com/2016
|
|
|
|
|
. http://adventofcode.com/2016/leaderboard
|
|
|
|
|
. http://adventofcode.com/2016/stats
|
|
|
|
|
. http://adventofcode.com/2016/sponsors
|
|
|
|
|
. http://adventofcode.com/2016/sponsors
|
|
|
|
|
. https://en.wikipedia.org/wiki/MD5
|
|
|
|
|
. http://adventofcode.com/2016
|