Mercurial > hg > aoc
diff 2017/day21/problem @ 34:049fb8e56025
Add problem statements and inputs
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Tue, 09 Jan 2018 21:51:44 -0500 |
parents | |
children |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/2017/day21/problem @@ -0,0 +1,121 @@ +--- 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 176. + +--- Part Two --- + +How many pixels stay on after 18 iterations? + +Your puzzle answer was 2368161. + +Both parts of this puzzle are complete! They provide two gold stars: **