143 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Advent of Code
 | ||
| 
 | ||
| --- Day 21: Fractal Art ---
 | ||
| 
 | ||
|    You find a program trying to generate some art. It uses a strange process
 | ||
|    that involves repeatedly enhancing the detail of an image through a set of
 | ||
|    rules.
 | ||
| 
 | ||
|    The image consists of a two-dimensional square grid of pixels that are
 | ||
|    either on (#) or off (.). The program always begins with this pattern:
 | ||
| 
 | ||
|  .#.
 | ||
|  ..#
 | ||
|  ###
 | ||
| 
 | ||
|    Because the pattern is both 3 pixels wide and 3 pixels tall, it is said to
 | ||
|    have a size of 3.
 | ||
| 
 | ||
|    Then, the program repeats the following process:
 | ||
| 
 | ||
|      • If the size is evenly divisible by 2, break the pixels up into 2x2
 | ||
|      squares, and convert each 2x2 square into a 3x3 square by following the
 | ||
|      corresponding enhancement rule.
 | ||
| 
 | ||
|      • Otherwise, the size is evenly divisible by 3; break the pixels up into
 | ||
|      3x3 squares, and convert each 3x3 square into a 4x4 square by following
 | ||
|      the corresponding enhancement rule.
 | ||
| 
 | ||
|    Because each square of pixels is replaced by a larger one, the image gains
 | ||
|    pixels and so its size increases.
 | ||
| 
 | ||
|    The artist's book of enhancement rules is nearby (your puzzle input);
 | ||
|    however, it seems to be missing rules. The artist explains that sometimes,
 | ||
|    one must rotate or flip the input pattern to find a match. (Never rotate or
 | ||
|    flip the output pattern, though.) Each pattern is written concisely: rows
 | ||
|    are listed as single units, ordered top-down, and separated by slashes. For
 | ||
|    example, the following rules correspond to the adjacent patterns:
 | ||
| 
 | ||
|  ../.#  =  ..
 | ||
|            .#
 | ||
| 
 | ||
|                  .#.
 | ||
|  .#./..#/###  =  ..#
 | ||
|                  ###
 | ||
| 
 | ||
|                          #..#
 | ||
|  #..#/..../#..#/.##.  =  ....
 | ||
|                          #..#
 | ||
|                          .##.
 | ||
| 
 | ||
|    When searching for a rule to use, rotate and flip the pattern as necessary.
 | ||
|    For example, all of the following patterns match the same rule:
 | ||
| 
 | ||
|  .#.   .#.   #..   ###
 | ||
|  ..#   #..   #.#   ..#
 | ||
|  ###   ###   ##.   .#.
 | ||
| 
 | ||
|    Suppose the book contained the following two rules:
 | ||
| 
 | ||
|  ../.# => ##./#../...
 | ||
|  .#./..#/### => #..#/..../..../#..#
 | ||
| 
 | ||
|    As before, the program begins with this pattern:
 | ||
| 
 | ||
|  .#.
 | ||
|  ..#
 | ||
|  ###
 | ||
| 
 | ||
|    The size of the grid (3) is not divisible by 2, but it is divisible by 3. It
 | ||
|    divides evenly into a single square; the square matches the second rule,
 | ||
|    which produces:
 | ||
| 
 | ||
|  #..#
 | ||
|  ....
 | ||
|  ....
 | ||
|  #..#
 | ||
| 
 | ||
|    The size of this enhanced grid (4) is evenly divisible by 2, so that rule is
 | ||
|    used. It divides evenly into four squares:
 | ||
| 
 | ||
|  #.|.#
 | ||
|  ..|..
 | ||
|  --+--
 | ||
|  ..|..
 | ||
|  #.|.#
 | ||
| 
 | ||
|    Each of these squares matches the same rule (../.# => ##./#../...), three of
 | ||
|    which require some flipping and rotation to line up with the rule. The
 | ||
|    output for the rule is the same in all four cases:
 | ||
| 
 | ||
|  ##.|##.
 | ||
|  #..|#..
 | ||
|  ...|...
 | ||
|  ---+---
 | ||
|  ##.|##.
 | ||
|  #..|#..
 | ||
|  ...|...
 | ||
| 
 | ||
|    Finally, the squares are joined into a new grid:
 | ||
| 
 | ||
|  ##.##.
 | ||
|  #..#..
 | ||
|  ......
 | ||
|  ##.##.
 | ||
|  #..#..
 | ||
|  ......
 | ||
| 
 | ||
|    Thus, after 2 iterations, the grid contains 12 pixels that are on.
 | ||
| 
 | ||
|    How many pixels stay on after 5 iterations?
 | ||
| 
 | ||
|    Your puzzle answer was 164.
 | ||
| 
 | ||
| --- Part Two ---
 | ||
| 
 | ||
|    How many pixels stay on after 18 iterations?
 | ||
| 
 | ||
|    Your puzzle answer was 2355110.
 | ||
| 
 | ||
|    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
 | ||
|    . http://adventofcode.com/
 | ||
|    . http://adventofcode.com/2017/about
 | ||
|    . http://adventofcode.com/2017/support
 | ||
|    . http://adventofcode.com/2017/events
 | ||
|    . http://adventofcode.com/2017/settings
 | ||
|    . http://adventofcode.com/2017/auth/logout
 | ||
|    . http://adventofcode.com/2017
 | ||
|    . http://adventofcode.com/2017
 | ||
|    . http://adventofcode.com/2017/leaderboard
 | ||
|    . http://adventofcode.com/2017/stats
 | ||
|    . http://adventofcode.com/2017/sponsors
 | ||
|    . http://adventofcode.com/2017/sponsors
 | ||
|    . http://adventofcode.com/2017
 | ||
|    . http://adventofcode.com/2017/day/21/input
 |