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
|