adventofcode/2016/day18/problem

102 lines
4.0 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Advent of Code
--- Day 18: Like a Rogue ---
As you enter this room, you hear a loud click! Some of the tiles in the floor here seem to be
pressure plates for traps, and the trap you just triggered has run out of... whatever it tried
to do to you. You doubt you'll be so lucky next time.
Upon closer examination, the traps and safe tiles in this room seem to follow a pattern. The
tiles are arranged into rows that are all the same width; you take note of the safe tiles (.)
and traps (^) in the first row (your puzzle input).
The type of tile (trapped or safe) in each row is based on the types of the tiles in the same
position, and to either side of that position, in the previous row. (If either side is off
either end of the row, it counts as "safe" because there isn't a trap embedded in the wall.)
For example, suppose you know the first row (with tiles marked by letters) and want to
determine the next row (with tiles marked by numbers):
ABCDE
12345
The type of tile 2 is based on the types of tiles A, B, and C; the type of tile 5 is based on
tiles D, E, and an imaginary "safe" tile. Let's call these three tiles from the previous row
the left, center, and right tiles, respectively. Then, a new tile is a trap only in one of the
following situations:
 Its left and center tiles are traps, but its right tile is not.
 Its center and right tiles are traps, but its left tile is not.
 Only its left tile is a trap.
 Only its right tile is a trap.
In any other situation, the new tile is safe.
Then, starting with the row ..^^., you can determine the next row by applying those rules to
each new tile:
 The leftmost character on the next row considers the left (nonexistent, so we assume
"safe"), center (the first ., which means "safe"), and right (the second ., also "safe")
tiles on the previous row. Because all of the trap rules require a trap in at least one of
the previous three tiles, the first tile on this new row is also safe, ..
 The second character on the next row considers its left (.), center (.), and right (^)
tiles from the previous row. This matches the fourth rule: only the right tile is a trap.
Therefore, the next tile in this new row is a trap, ^.
 The third character considers .^^, which matches the second trap rule: its center and
right tiles are traps, but its left tile is not. Therefore, this tile is also a trap, ^.
 The last two characters in this new row match the first and third rules, respectively, and
so they are both also traps, ^.
After these steps, we now know the next row of tiles in the room: .^^^^. Then, we continue on
to the next row, using the same rules, and get ^^..^. After determining two new rows, our map
looks like this:
..^^.
.^^^^
^^..^
Here's a larger example with ten tiles per row and ten rows:
.^^.^.^^^^
^^^...^..^
^.^^.^.^^.
..^^...^^^
.^^^^.^^.^
^^..^.^^..
^^^^..^^^.
^..^^^^.^^
.^^^..^.^^
^^.^^^..^^
In ten rows, this larger example has 38 safe tiles.
Starting with the map in your puzzle input, in a total of 40 rows (including the starting
row), how many safe tiles are there?
Your puzzle answer ________.
--- Part Two ---
How many safe tiles are there in a total of 400000 rows?
Your puzzle answer was ________.
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://nethackwiki.com/wiki/Trap
. http://adventofcode.com/2016
. http://adventofcode.com/2016/day/18/input