71 lines
2.5 KiB
Markdown
71 lines
2.5 KiB
Markdown
|
## \-\-- Day 5: A Maze of Twisty Trampolines, All Alike \-\--
|
|||
|
|
|||
|
An urgent
|
|||
|
interrupt arrives
|
|||
|
from the CPU: it\'s trapped in a maze of jump instructions, and it would
|
|||
|
like assistance from any programs with spare cycles to help find the
|
|||
|
exit.
|
|||
|
|
|||
|
The message includes a list of the offsets for each jump. Jumps are
|
|||
|
relative: `-1` moves to the previous instruction, and `2` skips the next
|
|||
|
one. Start at the first instruction in the list. The goal is to follow
|
|||
|
the jumps until one leads *outside* the list.
|
|||
|
|
|||
|
In addition, these instructions are a little strange; after each jump,
|
|||
|
the offset of that instruction increases by `1`. So, if you come across
|
|||
|
an offset of `3`, you would move three instructions forward, but change
|
|||
|
it to a `4` for the next time it is encountered.
|
|||
|
|
|||
|
For example, consider the following list of jump offsets:
|
|||
|
|
|||
|
0
|
|||
|
3
|
|||
|
0
|
|||
|
1
|
|||
|
-3
|
|||
|
|
|||
|
Positive jumps (\"forward\") move downward; negative jumps move upward.
|
|||
|
For legibility in this example, these offset values will be written all
|
|||
|
on one line, with the current instruction marked in parentheses. The
|
|||
|
following steps would be taken before an exit is found:
|
|||
|
|
|||
|
- `(0) 3 0 1 -3 ` - *before* we have taken any steps.
|
|||
|
- `(1) 3 0 1 -3 ` - jump with offset `0` (that is, don\'t jump at
|
|||
|
all). Fortunately, the instruction is then incremented to `1`.
|
|||
|
- ` 2 (3) 0 1 -3 ` - step forward because of the instruction we just
|
|||
|
modified. The first instruction is incremented again, now to `2`.
|
|||
|
- ` 2 4 0 1 (-3)` - jump all the way to the end; leave a `4`
|
|||
|
behind.
|
|||
|
- ` 2 (4) 0 1 -2 ` - go back to where we just were; increment `-3`
|
|||
|
to `-2`.
|
|||
|
- ` 2 5 0 1 -2 ` - jump `4` steps forward, escaping the maze.
|
|||
|
|
|||
|
In this example, the exit is reached in `5` steps.
|
|||
|
|
|||
|
*How many steps* does it take to reach the exit?
|
|||
|
|
|||
|
Your puzzle answer was `381680`.
|
|||
|
|
|||
|
## \-\-- Part Two \-\-- {#part2}
|
|||
|
|
|||
|
Now, the jumps are even stranger: after each jump, if the offset was
|
|||
|
*three or more*, instead *decrease* it by `1`. Otherwise, increase it by
|
|||
|
`1` as before.
|
|||
|
|
|||
|
Using this rule with the above example, the process now takes `10`
|
|||
|
steps, and the offset values after finding the exit are left as
|
|||
|
`2 3 2 3 -1`.
|
|||
|
|
|||
|
*How many steps* does it now take to reach the exit?
|
|||
|
|
|||
|
Your puzzle answer was `29717847`.
|
|||
|
|
|||
|
Both parts of this puzzle are complete! They provide two gold stars:
|
|||
|
\*\*
|
|||
|
|
|||
|
At this point, you should [return to your Advent calendar](/2017) and
|
|||
|
try another puzzle.
|
|||
|
|
|||
|
If you still want to see it, you can [get your puzzle
|
|||
|
input](5/input).
|