7.3

### 20Day 20

 (require aoc-racket/day20) package: aoc-racket

The puzzle. Our input is a target number of presents, in this case 36000000.



#### 20.1What’s the first house that gets the target number of presents?

We’re asked to imagine infinite elves delivering presents to an infinite sequence of houses. (Already I like this puzzle.) The first elf delivers a present to every house equal to 10 times his number (= 10); the second elf, 20 gifts to every second house; the nth elf, 10n gifts to every nth house.

Math jocks will notice that the elf behavior roughly describes a Sieve of Eratosthenes. Each house is visited by elf n only if n is a divisor of the house number. (Houses that are primes are therefore only visited by the first elf.) Might there be a Racket function that finds the divisors of a number? Why, yes — it’s called divisors. We can use it to find the numbers of the elves that visit a house, and loop through house numbers till we reach the target. (The 10-gift multiplier is arbitrary.)

 (require racket rackunit (only-in math divisors)) (provide (all-defined-out))