ps. look out for all my other solutions for Advent of Code challenges here.
See details of the challenge here.
Today’s challenge is pretty straight forward, and a brute force approach would have suffice – try every t from 0 to inifinity and return the first t that satisfies this equation for all the discs:
(t + disc.Number – (disc.Positions – disc.Time0Position)) % disc.Positions = 0
That said, there’s a simple optimization we can apply by restricting ourselves to values of t that gets you through the first slot. Give my input for the challenge:
Disc #1 has 13 positions; at time=0, it is at position 11. Disc #2 has 5 positions; at time=0, it is at position 0. Disc #3 has 17 positions; at time=0, it is at position 11. Disc #4 has 3 positions; at time=0, it is at position 0. Disc #5 has 7 positions; at time=0, it is at position 2. Disc #6 has 19 positions; at time=0, it is at position 17.
The first t that will get us through disc #1 is t=1 where disc #1 reaches position 0 on t=2 (which is 1s away from t). From there, we only need to check every 13s, ie t=14, t=27, t=40, …
After getting the first capsule (it contained a star! what great fortune!), the
machine detects your success and begins to rearrange itself.
When it’s done, the discs are back in their original configuration as if it were
time=0 again, but a new disc with 11 positions and starting at position 0 has
appeared exactly one second below the previously-bottom disc.
With this new disc, and counting again starting from time=0 with the
configuration in your puzzle input, what is the first time you can press the
button to get another capsule?
- Day 15 challenge description
- Advent of Code 2015
- Solution for Day 14
- All my F# solutions for Advent of Code
- Github repo
I’m an AWS Serverless Hero and the author of Production-Ready Serverless. I have run production workload at scale in AWS for nearly 10 years and I have been an architect or principal engineer with a variety of industries ranging from banking, e-commerce, sports streaming to mobile gaming. I currently work as an independent consultant focused on AWS and serverless.
Here is a complete list of all my posts on serverless and AWS Lambda. In the meantime, here are a few of my most popular blog posts.
- Lambda optimization tip – enable HTTP keep-alive
- You are thinking about serverless costs all wrong
- Many faced threats to Serverless security
- We can do better than percentile latencies
- I’m afraid you’re thinking about AWS Lambda cold starts all wrong
- Yubl’s road to Serverless
- AWS Lambda – should you have few monolithic functions or many single-purposed functions?
- AWS Lambda – compare coldstart time with different languages, memory and code sizes
- Guys, we’re doing pagination wrong