The source code for this post (both Part 1 and Part 2) is **available here** and you can **click here** to see my solutions for the other Advent of Code challenges.

Description for today’s challenge is here.

Once you understood what this challenge is really asking the solution becomes really simple:

If you read the question carefully, what it’s really saying is:

For every house number

N, only elves whose numberMthat is a divisor ofNwill visit this house and deliverM * 10gifts. Find the smallestNwhereSum(M * 10)>= 29000000.

So our first task is to find all divisors for any given number *N*, and since each divisor has a opposite (as in, for a divisor *M*, *N/M* is also a divisor) so you only need to iterate up to *Sqrt(N)*.

And since my input is such a high number, we can safely start from a relatively high number for *N* too (100K in this case) and use *Seq.unfold* to generate an infinite sequence of numbers.

## Part 2

Part 2 adds a small twist to proceedings – only divisors *M* that are* <= N/50* will be considered, and the multiplier is now 11 instead of 10.

Notice that since we’re not looking for ‘all’ divisors anymore, so I also took the liberty to rename the function to *findDivisors* so it more accurately describes what it does now.

Subscribe to my newsletter and get new contents delivered straight to your inbox :-)