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
 |