101 lines
3.3 KiB
Org Mode
101 lines
3.3 KiB
Org Mode
** --- Day 12: Hill Climbing Algorithm ---
|
|
You try contacting the Elves using your handheld device, but the river
|
|
you're following must be too low to get a decent signal.
|
|
|
|
You ask the device for a heightmap of the surrounding area (your puzzle
|
|
input). The heightmap shows the local area from above broken into a
|
|
grid; the elevation of each square of the grid is given by a single
|
|
lowercase letter, where =a= is the lowest elevation, =b= is the
|
|
next-lowest, and so on up to the highest elevation, =z=.
|
|
|
|
Also included on the heightmap are marks for your current position (=S=)
|
|
and the location that should get the best signal (=E=). Your current
|
|
position (=S=) has elevation =a=, and the location that should get the
|
|
best signal (=E=) has elevation =z=.
|
|
|
|
You'd like to reach =E=, but to save energy, you should do it in /as few
|
|
steps as possible/. During each step, you can move exactly one square
|
|
up, down, left, or right. To avoid needing to get out your climbing
|
|
gear, the elevation of the destination square can be /at most one
|
|
higher/ than the elevation of your current square; that is, if your
|
|
current elevation is =m=, you could step to elevation =n=, but not to
|
|
elevation =o=. (This also means that the elevation of the destination
|
|
square can be much lower than the elevation of your current square.)
|
|
|
|
For example:
|
|
|
|
#+begin_example
|
|
Sabqponm
|
|
abcryxxl
|
|
accszExk
|
|
acctuvwj
|
|
abdefghi
|
|
#+end_example
|
|
|
|
Here, you start in the top-left corner; your goal is near the middle.
|
|
You could start by moving down or right, but eventually you'll need to
|
|
head toward the =e= at the bottom. From there, you can spiral around to
|
|
the goal:
|
|
|
|
#+begin_example
|
|
v..v<<<<
|
|
>v.vv<<^
|
|
.>vv>E^^
|
|
..v>>>^^
|
|
..>>>>>^
|
|
#+end_example
|
|
|
|
In the above diagram, the symbols indicate whether the path exits each
|
|
square moving up (=^=), down (=v=), left (=<=), or right (=>=). The
|
|
location that should get the best signal is still =E=, and =.= marks
|
|
unvisited squares.
|
|
|
|
This path reaches the goal in =31= steps, the fewest possible.
|
|
|
|
/What is the fewest steps required to move from your current position to
|
|
the location that should get the best signal?/
|
|
|
|
Your puzzle answer was =408=.
|
|
|
|
** --- Part Two ---
|
|
As you walk up the hill, you suspect that the Elves will want to turn
|
|
this into a hiking trail. The beginning isn't very scenic, though;
|
|
perhaps you can find a better starting point.
|
|
|
|
To maximize exercise while hiking, the trail should start as low as
|
|
possible: elevation =a=. The goal is still the square marked =E=.
|
|
However, the trail should still be direct, taking the fewest steps to
|
|
reach its goal. So, you'll need to find the shortest path from /any
|
|
square at elevation =a=/ to the square marked =E=.
|
|
|
|
Again consider the example from above:
|
|
|
|
#+begin_example
|
|
Sabqponm
|
|
abcryxxl
|
|
accszExk
|
|
acctuvwj
|
|
abdefghi
|
|
#+end_example
|
|
|
|
Now, there are six choices for starting position (five marked =a=, plus
|
|
the square marked =S= that counts as being at elevation =a=). If you
|
|
start at the bottom-left square, you can reach the goal most quickly:
|
|
|
|
#+begin_example
|
|
...v<<<<
|
|
...vv<<^
|
|
...v>E^^
|
|
.>v>>>^^
|
|
>^>>>>>^
|
|
#+end_example
|
|
|
|
This path reaches the goal in only =29= steps, the fewest possible.
|
|
|
|
/What is the fewest steps required to move starting from any square with
|
|
elevation =a= to the location that should get the best signal?/
|
|
|
|
Your puzzle answer was =399=.
|
|
|
|
Both parts of this puzzle are complete! They provide two gold stars: **
|