132 lines
4.6 KiB
Org Mode
132 lines
4.6 KiB
Org Mode
** --- Day 24: Lobby Layout ---
|
|
Your raft makes it to the tropical island; it turns out that the small
|
|
crab was an excellent navigator. You make your way to the resort.
|
|
|
|
As you enter the lobby, you discover a small problem: the floor is being
|
|
renovated. You can't even reach the check-in desk until they've finished
|
|
installing the /new tile floor/.
|
|
|
|
The tiles are all /hexagonal/; they need to be arranged in a
|
|
[[https://en.wikipedia.org/wiki/Hexagonal_tiling][hex grid]] with a very
|
|
specific color pattern. Not in the mood to wait, you offer to help
|
|
figure out the pattern.
|
|
|
|
The tiles are all /white/ on one side and /black/ on the other. They
|
|
start with the white side facing up. The lobby is large enough to fit
|
|
whatever pattern might need to appear there.
|
|
|
|
A member of the renovation crew gives you a /list of the tiles that need
|
|
to be flipped over/ (your puzzle input). Each line in the list
|
|
identifies a single tile that needs to be flipped by giving a series of
|
|
steps starting from a /reference tile/ in the very center of the room.
|
|
(Every line starts from the same reference tile.)
|
|
|
|
Because the tiles are hexagonal, every tile has /six neighbors/: east,
|
|
southeast, southwest, west, northwest, and northeast. These directions
|
|
are given in your list, respectively, as =e=, =se=, =sw=, =w=, =nw=, and
|
|
=ne=. A tile is identified by a series of these directions with /no
|
|
delimiters/; for example, =esenee= identifies the tile you land on if
|
|
you start at the reference tile and then move one tile east, one tile
|
|
southeast, one tile northeast, and one tile east.
|
|
|
|
Each time a tile is identified, it flips from white to black or from
|
|
black to white. Tiles might be flipped more than once. For example, a
|
|
line like =esew= flips a tile immediately adjacent to the reference
|
|
tile, and a line like =nwwswee= flips the reference tile itself.
|
|
|
|
Here is a larger example:
|
|
|
|
#+BEGIN_EXAMPLE
|
|
sesenwnenenewseeswwswswwnenewsewsw
|
|
neeenesenwnwwswnenewnwwsewnenwseswesw
|
|
seswneswswsenwwnwse
|
|
nwnwneseeswswnenewneswwnewseswneseene
|
|
swweswneswnenwsewnwneneseenw
|
|
eesenwseswswnenwswnwnwsewwnwsene
|
|
sewnenenenesenwsewnenwwwse
|
|
wenwwweseeeweswwwnwwe
|
|
wsweesenenewnwwnwsenewsenwwsesesenwne
|
|
neeswseenwwswnwswswnw
|
|
nenwswwsewswnenenewsenwsenwnesesenew
|
|
enewnwewneswsewnwswenweswnenwsenwsw
|
|
sweneswneswneneenwnewenewwneswswnese
|
|
swwesenesewenwneswnwwneseswwne
|
|
enesenwswwswneneswsenwnewswseenwsese
|
|
wnwnesenesenenwwnenwsewesewsesesew
|
|
nenewswnwewswnenesenwnesewesw
|
|
eneswnwswnwsenenwnwnwwseeswneewsenese
|
|
neswnwewnwnwseenwseesewsenwsweewe
|
|
wseweeenwnesenwwwswnew
|
|
#+END_EXAMPLE
|
|
|
|
In the above example, 10 tiles are flipped once (to black), and 5 more
|
|
are flipped twice (to black, then back to white). After all of these
|
|
instructions have been followed, a total of /=10=/ tiles are /black/.
|
|
|
|
Go through the renovation crew's list and determine which tiles they
|
|
need to flip. After all of the instructions have been followed, /how
|
|
many tiles are left with the black side up?/
|
|
|
|
Your puzzle answer was =450=.
|
|
|
|
** --- Part Two ---
|
|
The tile floor in the lobby is meant to be a living art exhibit. Every
|
|
day, the tiles are all flipped according to the following rules:
|
|
|
|
- Any /black/ tile with /zero/ or /more than 2/ black tiles immediately
|
|
adjacent to it is flipped to /white/.
|
|
- Any /white/ tile with /exactly 2/ black tiles immediately adjacent to
|
|
it is flipped to /black/.
|
|
|
|
Here, /tiles immediately adjacent/ means the six tiles directly touching
|
|
the tile in question.
|
|
|
|
The rules are applied /simultaneously/ to every tile; put another way,
|
|
it is first determined which tiles need to be flipped, then they are all
|
|
flipped at the same time.
|
|
|
|
In the above example, the number of black tiles that are facing up after
|
|
the given number of days has passed is as follows:
|
|
|
|
#+BEGIN_EXAMPLE
|
|
Day 1: 15
|
|
Day 2: 12
|
|
Day 3: 25
|
|
Day 4: 14
|
|
Day 5: 23
|
|
Day 6: 28
|
|
Day 7: 41
|
|
Day 8: 37
|
|
Day 9: 49
|
|
Day 10: 37
|
|
|
|
Day 20: 132
|
|
Day 30: 259
|
|
Day 40: 406
|
|
Day 50: 566
|
|
Day 60: 788
|
|
Day 70: 1106
|
|
Day 80: 1373
|
|
Day 90: 1844
|
|
Day 100: 2208
|
|
#+END_EXAMPLE
|
|
|
|
After executing this process a total of 100 times, there would be
|
|
/=2208=/ black tiles facing up.
|
|
|
|
/How many tiles will be black after 100 days?/
|
|
|
|
Your puzzle answer was =4059=.
|
|
|
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
|
|
|
At this point, all that is left is for you to [[/2020][admire your
|
|
Advent calendar]].
|
|
|
|
If you still want to see it, you can [[file:24/input][get your puzzle
|
|
input]].
|
|
|
|
You can also [Shareon
|
|
[[https://twitter.com/intent/tweet?text=I%27ve+completed+%22Lobby+Layout%22+%2D+Day+24+%2D+Advent+of+Code+2020&url=https%3A%2F%2Fadventofcode%2Ecom%2F2020%2Fday%2F24&related=ericwastl&hashtags=AdventOfCode][Twitter]]
|
|
[[javascript:void(0);][Mastodon]]] this puzzle.
|