2018-12-06 17:22:55 +00:00
|
|
|
|
Advent of Code
|
|
|
|
|
|
|
|
|
|
--- Day 5: Alchemical Reduction ---
|
|
|
|
|
|
2019-11-08 21:01:07 +00:00
|
|
|
|
You've managed to sneak in to the prototype suit manufacturing lab. The
|
|
|
|
|
Elves are making decent progress, but are still struggling with the suit's
|
|
|
|
|
size reduction capabilities.
|
|
|
|
|
|
|
|
|
|
While the very latest in 1518 alchemical technology might have solved their
|
|
|
|
|
problem eventually, you can do better. You scan the chemical composition of
|
|
|
|
|
the suit's material and discover that it is formed by extremely long
|
|
|
|
|
polymers (one of which is available as your puzzle input).
|
|
|
|
|
|
|
|
|
|
The polymer is formed by smaller units which, when triggered, react with
|
|
|
|
|
each other such that two adjacent units of the same type and opposite
|
|
|
|
|
polarity are destroyed. Units' types are represented by letters; units'
|
|
|
|
|
polarity is represented by capitalization. For instance, r and R are units
|
|
|
|
|
with the same type but opposite polarity, whereas r and s are entirely
|
|
|
|
|
different types and do not react.
|
2018-12-06 17:22:55 +00:00
|
|
|
|
|
|
|
|
|
For example:
|
|
|
|
|
|
2019-11-08 21:01:07 +00:00
|
|
|
|
• In aA, a and A react, leaving nothing behind. • In abBA, bB destroys
|
|
|
|
|
itself, leaving aA. As above, this then destroys itself, leaving nothing.
|
|
|
|
|
• In abAB, no two adjacent units are of the same type, and so nothing
|
|
|
|
|
happens. • In aabAAB, even though aa and AA are of the same type, their
|
|
|
|
|
polarities match, and so nothing happens.
|
2018-12-06 17:22:55 +00:00
|
|
|
|
|
|
|
|
|
Now, consider a larger example, dabAcCaCBAcCcaDA:
|
|
|
|
|
|
|
|
|
|
dabAcCaCBAcCcaDA The first 'cC' is removed.
|
|
|
|
|
dabAaCBAcCcaDA This creates 'Aa', which is removed.
|
|
|
|
|
dabCBAcCcaDA Either 'cC' or 'Cc' are removed (the result is the same).
|
|
|
|
|
dabCBAcaDA No further actions can be taken.
|
|
|
|
|
|
|
|
|
|
After all possible reactions, the resulting polymer contains 10 units.
|
|
|
|
|
|
2019-11-08 21:01:07 +00:00
|
|
|
|
How many units remain after fully reacting the polymer you scanned? (Note:
|
|
|
|
|
in this puzzle and others, the input is large; if you copy/paste your input,
|
|
|
|
|
make sure you get the whole thing.)
|
2018-12-06 17:22:55 +00:00
|
|
|
|
|
|
|
|
|
Your puzzle answer was 10878.
|
|
|
|
|
|
|
|
|
|
--- Part Two ---
|
|
|
|
|
|
|
|
|
|
Time to improve the polymer.
|
|
|
|
|
|
2019-11-08 21:01:07 +00:00
|
|
|
|
One of the unit types is causing problems; it's preventing the polymer from
|
|
|
|
|
collapsing as much as it should. Your goal is to figure out which unit type
|
|
|
|
|
is causing the most problems, remove all instances of it (regardless of
|
|
|
|
|
polarity), fully react the remaining polymer, and measure its length.
|
2018-12-06 17:22:55 +00:00
|
|
|
|
|
|
|
|
|
For example, again using the polymer dabAcCaCBAcCcaDA from above:
|
|
|
|
|
|
2019-11-08 21:01:07 +00:00
|
|
|
|
• Removing all A/a units produces dbcCCBcCcD. Fully reacting this polymer
|
|
|
|
|
produces dbCBcD, which has length 6.
|
|
|
|
|
• Removing all B/b units produces daAcCaCAcCcaDA. Fully reacting this
|
|
|
|
|
polymer produces daCAcaDA, which has length 8.
|
|
|
|
|
• Removing all C/c units produces dabAaBAaDA. Fully reacting this polymer
|
|
|
|
|
produces daDA, which has length 4.
|
|
|
|
|
• Removing all D/d units produces abAcCaCBAcCcaA. Fully reacting this
|
|
|
|
|
polymer produces abCBAc, which has length 6.
|
2018-12-06 17:22:55 +00:00
|
|
|
|
|
|
|
|
|
In this example, removing all C/c units was best, producing the answer 4.
|
|
|
|
|
|
2019-11-08 21:01:07 +00:00
|
|
|
|
What is the length of the shortest polymer you can produce by removing all
|
|
|
|
|
units of exactly one type and fully reacting the result?
|
2018-12-06 17:22:55 +00:00
|
|
|
|
|
|
|
|
|
Your puzzle answer was 6874.
|
|
|
|
|
|
|
|
|
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
|
|
|
|
|
|
|
|
|
References
|
|
|
|
|
|
|
|
|
|
Visible links
|
|
|
|
|
. https://adventofcode.com/
|
|
|
|
|
. https://adventofcode.com/2018/about
|
|
|
|
|
. https://adventofcode.com/2018/events
|
|
|
|
|
. https://adventofcode.com/2018/settings
|
|
|
|
|
. https://adventofcode.com/2018/auth/logout
|
|
|
|
|
. Advent of Code Supporter
|
|
|
|
|
https://adventofcode.com/2018/support
|
|
|
|
|
. https://adventofcode.com/2018
|
|
|
|
|
. https://adventofcode.com/2018
|
|
|
|
|
. https://adventofcode.com/2018/support
|
|
|
|
|
. https://adventofcode.com/2018/sponsors
|
|
|
|
|
. https://adventofcode.com/2018/leaderboard
|
|
|
|
|
. https://adventofcode.com/2018/stats
|
|
|
|
|
. https://adventofcode.com/2018/sponsors
|
|
|
|
|
. https://en.wikipedia.org/wiki/Polymer
|
|
|
|
|
. https://adventofcode.com/2018
|
|
|
|
|
. https://adventofcode.com/2018/day/5/input
|