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
|