Blog

Advent of Code, day 14: Chain Reaction

15 Dec, 2019
Xebia Background Header Wave

Even though Eric Wastl’s creativity is large enough to regularly surprise the people at #XebiaAoC, there are some puzzles in #AdventOfCode that bring back memories to challenges seen before. Upon reading today’s Advent of Code puzzle, it immediately brought back memories to one of the harder puzzles in 2015.

Today’s puzzle was about finding the required source materials to end up with a sufficient amount of fuel. The puzzle input was a list of formulas describing chemical reactions, transforming source materials into other materials. The challenge was to find the right amount of source material to produce one unit of fuel, following the transformation of that source material through a series of chain reactions. Not completely original, but it definitely added a fun twist by requiring specific amounts of materials.

It’s a nice reminder that often you need just the right amount of source material, transforming that into obscure, novel and new components, ultimately ending with a desirable substance.

Which brings back memories to the hit song "Chain Reaction", as performed by Diana Ross. The song originated from a significant amount of talent in songwriting, realizing complex chord progressions and clever key changes (from B to Db to D in both the first and second chorus, and a change from B to Eb towards E in the last chorus), ultimately combined into a fun song delivered by an excellent singer and musicians. By the way, the song was written and produced by The Bee Gees, who also provided the backing vocals. You might not like it though, as it’s very dance-y and upbeat. Then I’ll predict you’ll not like the music from Motown either, as Chain Reaction is a tribute to that style.

Which is funny, because many people in December 2015 also didn’t like that puzzle. As I said, Advent of Code’s day 19 of December 2015 delivered the hardest puzzle of 2015, and one of the harder puzzles in Advent of Code ever.

How can we know? Well, a metric that hints towards a puzzle’s difficulty is the time it takes hundred competitive programmers to solve the puzzle. On average, most of the puzzles are solved by the first hundred people in about 30 minutes. December 19, 2015 required over 3 hours and 50 minutes for the hundredth coder to solve both parts, topping every other puzzle in 2015.

How can we easily compare puzzles’ difficulties? I often refer people to a visualization made by Maurits van der Schee, a Xebia-alumnus. His scatterplot visualizations, inspired by an example from Michael Fogleman, show the first hundred programmers to solve the first and second part of every daily puzzle as a firework explosion. The more time it takes people to solve a puzzle, the higher the fireworks are placed in the sky. It’s clear that day 19 of 2015 sent the fireworks higher in the sky than ever.

Maurits is updating the scatterplots regularly, making it easy to compare the puzzles within one year, but also over the years. Keep in mind though that the last comparison is a bit less reliable, since the population of people differs over the years, and definitely more (competitive) programmers are joining in 2019 compare to 2015. As an example of that, day 1 of 2015 has been completed by a bit over 40.000 people, but day 1 of 2019 has already been solved by close to 80.000 people.

Finally, do you want to be surprised by more chain reactions? Then Google, Bing or DuckDuckGo for "Rube Goldberg machine". A Rube Goldberg machine is designed to perform a simple task in an indirect and excessively complicated way. Often, the machines consist of a series of simple devices in which one action triggers a next, eventually resulting in achieving the goal of the machine. Two of the better contraptions I know are made by OK Go and by Honda. Enjoy watching these chain reactions, and be amazed by the talent and craftsmanship of the makers.

Advent of Code 2019 Series

Questions?

Get in touch with us to learn more about the subject and related solutions

Explore related posts