279 lines
7.5 KiB
Plaintext
279 lines
7.5 KiB
Plaintext
Advent of Code
|
||
|
||
--- Day 24: Planet of Discord ---
|
||
|
||
You land on Eris, your last stop before reaching Santa. As soon as you do, your sensors start picking up strange life forms
|
||
moving around: Eris is infested with bugs! With an over 24-hour roundtrip for messages between you and Earth, you'll have to
|
||
deal with this problem on your own.
|
||
|
||
Eris isn't a very large place; a scan of the entire area fits into a 5x5 grid (your puzzle input). The scan shows bugs (#)
|
||
and empty spaces (.).
|
||
|
||
Each minute, The bugs live and die based on the number of bugs in the four adjacent tiles:
|
||
|
||
• A bug dies (becoming an empty space) unless there is exactly one bug adjacent to it.
|
||
• An empty space becomes infested with a bug if exactly one or two bugs are adjacent to it.
|
||
|
||
Otherwise, a bug or empty space remains the same. (Tiles on the edges of the grid have fewer than four adjacent tiles; the
|
||
missing tiles count as empty space.) This process happens in every location simultaneously; that is, within the same minute,
|
||
the number of adjacent bugs is counted for every tile first, and then the tiles are updated.
|
||
|
||
Here are the first few minutes of an example scenario:
|
||
|
||
Initial state:
|
||
....#
|
||
#..#.
|
||
#..##
|
||
..#..
|
||
#....
|
||
|
||
After 1 minute:
|
||
#..#.
|
||
####.
|
||
###.#
|
||
##.##
|
||
.##..
|
||
|
||
After 2 minutes:
|
||
#####
|
||
....#
|
||
....#
|
||
...#.
|
||
#.###
|
||
|
||
After 3 minutes:
|
||
#....
|
||
####.
|
||
...##
|
||
#.##.
|
||
.##.#
|
||
|
||
After 4 minutes:
|
||
####.
|
||
....#
|
||
##..#
|
||
.....
|
||
##...
|
||
|
||
To understand the nature of the bugs, watch for the first time a layout of bugs and empty spaces matches any previous layout.
|
||
In the example above, the first layout to appear twice is:
|
||
|
||
.....
|
||
.....
|
||
.....
|
||
#....
|
||
.#...
|
||
|
||
To calculate the biodiversity rating for this layout, consider each tile left-to-right in the top row, then left-to-right in
|
||
the second row, and so on. Each of these tiles is worth biodiversity points equal to increasing powers of two: 1, 2, 4, 8,
|
||
16, 32, and so on. Add up the biodiversity points for tiles with bugs; in this example, the 16th tile (32768 points) and 22nd
|
||
tile (2097152 points) have bugs, a total biodiversity rating of 2129920.
|
||
|
||
What is the biodiversity rating for the first layout that appears twice?
|
||
|
||
Your puzzle answer was 17321586.
|
||
|
||
--- Part Two ---
|
||
|
||
After careful analysis, one thing is certain: you have no idea where all these bugs are coming from.
|
||
|
||
Then, you remember: Eris is an old Plutonian settlement! Clearly, the bugs are coming from recursively-folded space.
|
||
|
||
This 5x5 grid is only one level in an infinite number of recursion levels. The tile in the middle of the grid is actually
|
||
another 5x5 grid, the grid in your scan is contained as the middle tile of a larger 5x5 grid, and so on. Two levels of grids
|
||
look like this:
|
||
|
||
| | | |
|
||
| | | |
|
||
| | | |
|
||
-----+-----+---------+-----+-----
|
||
| | | |
|
||
| | | |
|
||
| | | |
|
||
-----+-----+---------+-----+-----
|
||
| | | | | | | |
|
||
| |-+-+-+-+-| |
|
||
| | | | | | | |
|
||
| |-+-+-+-+-| |
|
||
| | | |?| | | |
|
||
| |-+-+-+-+-| |
|
||
| | | | | | | |
|
||
| |-+-+-+-+-| |
|
||
| | | | | | | |
|
||
-----+-----+---------+-----+-----
|
||
| | | |
|
||
| | | |
|
||
| | | |
|
||
-----+-----+---------+-----+-----
|
||
| | | |
|
||
| | | |
|
||
| | | |
|
||
|
||
(To save space, some of the tiles are not drawn to scale.) Remember, this is only a small part of the infinitely recursive
|
||
grid; there is a 5x5 grid that contains this diagram, and a 5x5 grid that contains that one, and so on. Also, the ? in the
|
||
diagram contains another 5x5 grid, which itself contains another 5x5 grid, and so on.
|
||
|
||
The scan you took (your puzzle input) shows where the bugs are on a single level of this structure. The middle tile of your
|
||
scan is empty to accommodate the recursive grids within it. Initially, no other levels contain bugs.
|
||
|
||
Tiles still count as adjacent if they are directly up, down, left, or right of a given tile. Some tiles have adjacent tiles
|
||
at a recursion level above or below its own level. For example:
|
||
|
||
| | | |
|
||
1 | 2 | 3 | 4 | 5
|
||
| | | |
|
||
-----+-----+---------+-----+-----
|
||
| | | |
|
||
6 | 7 | 8 | 9 | 10
|
||
| | | |
|
||
-----+-----+---------+-----+-----
|
||
| |A|B|C|D|E| |
|
||
| |-+-+-+-+-| |
|
||
| |F|G|H|I|J| |
|
||
| |-+-+-+-+-| |
|
||
11 | 12 |K|L|?|N|O| 14 | 15
|
||
| |-+-+-+-+-| |
|
||
| |P|Q|R|S|T| |
|
||
| |-+-+-+-+-| |
|
||
| |U|V|W|X|Y| |
|
||
-----+-----+---------+-----+-----
|
||
| | | |
|
||
16 | 17 | 18 | 19 | 20
|
||
| | | |
|
||
-----+-----+---------+-----+-----
|
||
| | | |
|
||
21 | 22 | 23 | 24 | 25
|
||
| | | |
|
||
|
||
• Tile 19 has four adjacent tiles: 14, 18, 20, and 24.
|
||
• Tile G has four adjacent tiles: B, F, H, and L.
|
||
• Tile D has four adjacent tiles: 8, C, E, and I.
|
||
• Tile E has four adjacent tiles: 8, D, 14, and J.
|
||
• Tile 14 has eight adjacent tiles: 9, E, J, O, T, Y, 15, and 19.
|
||
• Tile N has eight adjacent tiles: I, O, S, and five tiles within the sub-grid marked ?.
|
||
|
||
The rules about bugs living and dying are the same as before.
|
||
|
||
For example, consider the same initial state as above:
|
||
|
||
....#
|
||
#..#.
|
||
#.?##
|
||
..#..
|
||
#....
|
||
|
||
The center tile is drawn as ? to indicate the next recursive grid. Call this level 0; the grid within this one is level 1,
|
||
and the grid that contains this one is level -1. Then, after ten minutes, the grid at each level would look like this:
|
||
|
||
Depth -5:
|
||
..#..
|
||
.#.#.
|
||
..?.#
|
||
.#.#.
|
||
..#..
|
||
|
||
Depth -4:
|
||
...#.
|
||
...##
|
||
..?..
|
||
...##
|
||
...#.
|
||
|
||
Depth -3:
|
||
#.#..
|
||
.#...
|
||
..?..
|
||
.#...
|
||
#.#..
|
||
|
||
Depth -2:
|
||
.#.##
|
||
....#
|
||
..?.#
|
||
...##
|
||
.###.
|
||
|
||
Depth -1:
|
||
#..##
|
||
...##
|
||
..?..
|
||
...#.
|
||
.####
|
||
|
||
Depth 0:
|
||
.#...
|
||
.#.##
|
||
.#?..
|
||
.....
|
||
.....
|
||
|
||
Depth 1:
|
||
.##..
|
||
#..##
|
||
..?.#
|
||
##.##
|
||
#####
|
||
|
||
Depth 2:
|
||
###..
|
||
##.#.
|
||
#.?..
|
||
.#.##
|
||
#.#..
|
||
|
||
Depth 3:
|
||
..###
|
||
.....
|
||
#.?..
|
||
#....
|
||
#...#
|
||
|
||
Depth 4:
|
||
.###.
|
||
#..#.
|
||
#.?..
|
||
##.#.
|
||
.....
|
||
|
||
Depth 5:
|
||
####.
|
||
#..#.
|
||
#.?#.
|
||
####.
|
||
.....
|
||
|
||
In this example, after 10 minutes, a total of 99 bugs are present.
|
||
|
||
Starting with your scan, how many bugs are present after 200 minutes?
|
||
|
||
Your puzzle answer was 1921.
|
||
|
||
Both parts of this puzzle are complete! They provide two gold stars: **
|
||
|
||
At this point, all that is left is for you to admire your Advent calendar.
|
||
|
||
If you still want to see it, you can get your puzzle input.
|
||
|
||
References
|
||
|
||
Visible links
|
||
. https://adventofcode.com/
|
||
. https://adventofcode.com/2019/about
|
||
. https://adventofcode.com/2019/events
|
||
. https://adventofcode.com/2019/settings
|
||
. https://adventofcode.com/2019/auth/logout
|
||
. Advent of Code Supporter
|
||
https://adventofcode.com/2019/support
|
||
. https://adventofcode.com/2019
|
||
. https://adventofcode.com/2019
|
||
. https://adventofcode.com/2019/support
|
||
. https://adventofcode.com/2019/sponsors
|
||
. https://adventofcode.com/2019/leaderboard
|
||
. https://adventofcode.com/2019/stats
|
||
. https://adventofcode.com/2019/sponsors
|
||
. https://en.wikipedia.org/wiki/Eris_(dwarf_planet)
|
||
. https://www.nationalgeographic.org/thisday/sep9/worlds-first-computer-bug/
|
||
. https://adventofcode.com/2019/day/20
|
||
. https://adventofcode.com/2019
|
||
. https://adventofcode.com/2019/day/24/input
|