# AoC 2017 Day 21: Fractal Expander

### Source: Fractal Art

Part 1: Start with an input image made of . and # pixels. For n iterations, break the image into blocks:

• If the current size is even, break the image into 2x2 chunks and replace each with a 3x3 chunk
• If the current size is odd, break the image into 3x3 chunks and replace each with a 4x4 chunk

The replacement rules will be specified in the following format (example is a 3x3 -> 4x4 rule):

.#./..#/### => #..#/…./…./#..#


> In that example, replace this:

> 
.#.
..#
###


With this:

#..# …. …. #..#

# AoC 2017 Day 20: Miniature Universe Simulator

### Source: Particle Swarm

Part 1: Given the initial position, velocity, and acceleration of a large number of particles, which particle will stay the closet to the origin as the simulation runs to infinity?

# AoC 2017 Day 18: Duetvm

### Source: Duet

Part 1: Create a virtual machine with the following instruction set:

• snd X plays a sound with a frequency equal to the value of X
• set X Y sets register X to Y
• add X Y set register X to X + Y
• mul X Y sets register X to X * Y
• mod X Y sets register X to X mod Y
• rcv X recovers the frequency of the last sound played, if X is not zero
• jgz X Y jumps with an offset of the value of Y, iff X is greater than zero

In most cases, X and Y can be either an integer value or a register.

What is the value recovered by rcv the first time X is non-zero?

# AoC 2017 Day 14: Knot Hash Gridinator

### Source: Disk Defragmentation

Part 1: Create a 128x128 grid. Generate each row by taking the knot hash of salt-{index}. The bits of the hash represent if a tile in the grid is free (0) or used (1).

Given your salt as input, how many squares are used`?