223 lines
8.2 KiB
Plaintext
223 lines
8.2 KiB
Plaintext
[1]Advent of Code
|
||
|
||
• [2][About]
|
||
• [3][Events]
|
||
• [4][Shop]
|
||
• [5][Settings]
|
||
• [6][Log Out]
|
||
|
||
br0xen [7](AoC++) 24*
|
||
|
||
sub y{[8]2023}
|
||
|
||
• [9][Calendar]
|
||
• [10][AoC++]
|
||
• [11][Sponsors]
|
||
• [12][Leaderboard]
|
||
• [13][Stats]
|
||
|
||
Our [14]sponsors help make Advent of Code possible:
|
||
[15]Tailscale - Secure remote access, powered by WireGuard. Replace your
|
||
VPN :)
|
||
|
||
--- Day 12: Hot Springs ---
|
||
|
||
You finally reach the hot springs! You can see steam rising from secluded
|
||
areas attached to the primary, ornate building.
|
||
|
||
As you turn to enter, the [16]researcher stops you. "Wait - I thought you
|
||
were looking for the hot springs, weren't you?" You indicate that this
|
||
definitely looks like hot springs to you.
|
||
|
||
"Oh, sorry, common mistake! This is actually the [17]onsen! The hot
|
||
springs are next door."
|
||
|
||
You look in the direction the researcher is pointing and suddenly notice
|
||
the massive metal helixes towering overhead. "This way!"
|
||
|
||
It only takes you a few more steps to reach the main gate of the massive
|
||
fenced-off area containing the springs. You go through the gate and into a
|
||
small administrative building.
|
||
|
||
"Hello! What brings you to the hot springs today? Sorry they're not very
|
||
hot right now; we're having a lava shortage at the moment." You ask about
|
||
the missing machine parts for Desert Island.
|
||
|
||
"Oh, all of Gear Island is currently offline! Nothing is being
|
||
manufactured at the moment, not until we get more lava to heat our forges.
|
||
And our springs. The springs aren't very springy unless they're hot!"
|
||
|
||
"Say, could you go up and see why the lava stopped flowing? The springs
|
||
are too cold for normal operation, but we should be able to find one
|
||
springy enough to launch you up there!"
|
||
|
||
There's just one problem - many of the springs have fallen into disrepair,
|
||
so they're not actually sure which springs would even be safe to use!
|
||
Worse yet, their condition records of which springs are damaged (your
|
||
puzzle input) are also damaged! You'll need to help them repair the
|
||
damaged records.
|
||
|
||
In the giant field just outside, the springs are arranged into rows. For
|
||
each row, the condition records show every spring and whether it is
|
||
operational (.) or damaged (#). This is the part of the condition records
|
||
that is itself damaged; for some springs, it is simply unknown (?) whether
|
||
the spring is operational or damaged.
|
||
|
||
However, the engineer that produced the condition records also duplicated
|
||
some of this information in a different format! After the list of springs
|
||
for a given row, the size of each contiguous group of damaged springs is
|
||
listed in the order those groups appear in the row. This list always
|
||
accounts for every damaged spring, and each number is the entire size of
|
||
its contiguous group (that is, groups are always separated by at least one
|
||
operational spring: #### would always be 4, never 2,2).
|
||
|
||
So, condition records with no unknown spring conditions might look like
|
||
this:
|
||
|
||
#.#.### 1,1,3
|
||
.#...#....###. 1,1,3
|
||
.#.###.#.###### 1,3,1,6
|
||
####.#...#... 4,1,1
|
||
#....######..#####. 1,6,5
|
||
.###.##....# 3,2,1
|
||
|
||
However, the condition records are partially damaged; some of the springs'
|
||
conditions are actually unknown (?). For example:
|
||
|
||
???.### 1,1,3
|
||
.??..??...?##. 1,1,3
|
||
?#?#?#?#?#?#?#? 1,3,1,6
|
||
????.#...#... 4,1,1
|
||
????.######..#####. 1,6,5
|
||
?###???????? 3,2,1
|
||
|
||
Equipped with this information, it is your job to figure out how many
|
||
different arrangements of operational and broken springs fit the given
|
||
criteria in each row.
|
||
|
||
In the first line (???.### 1,1,3), there is exactly one way separate
|
||
groups of one, one, and three broken springs (in that order) can appear in
|
||
that row: the first three unknown springs must be broken, then
|
||
operational, then broken (#.#), making the whole row #.#.###.
|
||
|
||
The second line is more interesting: .??..??...?##. 1,1,3 could be a total
|
||
of four different arrangements. The last ? must always be broken (to
|
||
satisfy the final contiguous group of three broken springs), and each ??
|
||
must hide exactly one of the two broken springs. (Neither ?? could be both
|
||
broken springs or they would form a single contiguous group of two; if
|
||
that were true, the numbers afterward would have been 2,3 instead.) Since
|
||
each ?? can either be #. or .#, there are four possible arrangements of
|
||
springs.
|
||
|
||
The last line is actually consistent with ten different arrangements!
|
||
Because the first number is 3, the first and second ? must both be . (if
|
||
either were #, the first number would have to be 4 or higher). However,
|
||
the remaining run of unknown spring conditions have many different ways
|
||
they could hold groups of two and one broken springs:
|
||
|
||
?###???????? 3,2,1
|
||
.###.##.#...
|
||
.###.##..#..
|
||
.###.##...#.
|
||
.###.##....#
|
||
.###..##.#..
|
||
.###..##..#.
|
||
.###..##...#
|
||
.###...##.#.
|
||
.###...##..#
|
||
.###....##.#
|
||
|
||
In this example, the number of possible arrangements for each row is:
|
||
|
||
• ???.### 1,1,3 - 1 arrangement
|
||
• .??..??...?##. 1,1,3 - 4 arrangements
|
||
• ?#?#?#?#?#?#?#? 1,3,1,6 - 1 arrangement
|
||
• ????.#...#... 4,1,1 - 1 arrangement
|
||
• ????.######..#####. 1,6,5 - 4 arrangements
|
||
• ?###???????? 3,2,1 - 10 arrangements
|
||
|
||
Adding all of the possible arrangement counts together produces a total of
|
||
21 arrangements.
|
||
|
||
For each row, count all of the different arrangements of operational and
|
||
broken springs that meet the given criteria. What is the sum of those
|
||
counts?
|
||
|
||
Your puzzle answer was 7716.
|
||
|
||
--- Part Two ---
|
||
|
||
As you look out at the field of springs, you feel like there are way more
|
||
springs than the condition records list. When you examine the records, you
|
||
discover that they were actually folded up this whole time!
|
||
|
||
To unfold the records, on each row, replace the list of spring conditions
|
||
with five copies of itself (separated by ?) and replace the list of
|
||
contiguous groups of damaged springs with five copies of itself (separated
|
||
by ,).
|
||
|
||
So, this row:
|
||
|
||
.# 1
|
||
|
||
Would become:
|
||
|
||
.#?.#?.#?.#?.# 1,1,1,1,1
|
||
|
||
The first line of the above example would become:
|
||
|
||
???.###????.###????.###????.###????.### 1,1,3,1,1,3,1,1,3,1,1,3,1,1,3
|
||
|
||
In the above example, after unfolding, the number of possible arrangements
|
||
for some rows is now much larger:
|
||
|
||
• ???.### 1,1,3 - 1 arrangement
|
||
• .??..??...?##. 1,1,3 - 16384 arrangements
|
||
• ?#?#?#?#?#?#?#? 1,3,1,6 - 1 arrangement
|
||
• ????.#...#... 4,1,1 - 16 arrangements
|
||
• ????.######..#####. 1,6,5 - 2500 arrangements
|
||
• ?###???????? 3,2,1 - 506250 arrangements
|
||
|
||
After unfolding, adding all of the possible arrangement counts together
|
||
produces 525152.
|
||
|
||
Unfold your condition records; what is the new sum of possible arrangement
|
||
counts?
|
||
|
||
Your puzzle answer was 18716325559999.
|
||
|
||
Both parts of this puzzle are complete! They provide two gold stars: **
|
||
|
||
At this point, you should [18]return to your Advent calendar and try
|
||
another puzzle.
|
||
|
||
If you still want to see it, you can [19]get your puzzle input.
|
||
|
||
You can also [Shareon [20]Twitter [21]Mastodon] this puzzle.
|
||
|
||
References
|
||
|
||
Visible links
|
||
1. https://adventofcode.com/
|
||
2. https://adventofcode.com/2023/about
|
||
3. https://adventofcode.com/2023/events
|
||
4. https://teespring.com/stores/advent-of-code
|
||
5. https://adventofcode.com/2023/settings
|
||
6. https://adventofcode.com/2023/auth/logout
|
||
7. Advent of Code Supporter
|
||
https://adventofcode.com/2023/support
|
||
8. https://adventofcode.com/2023
|
||
9. https://adventofcode.com/2023
|
||
10. https://adventofcode.com/2023/support
|
||
11. https://adventofcode.com/2023/sponsors
|
||
12. https://adventofcode.com/2023/leaderboard
|
||
13. https://adventofcode.com/2023/stats
|
||
14. https://adventofcode.com/2023/sponsors
|
||
15. https://tailscale.com/advent
|
||
16. https://adventofcode.com/2023/day/11
|
||
17. https://en.wikipedia.org/wiki/Onsen
|
||
18. https://adventofcode.com/2023
|
||
19. https://adventofcode.com/2023/day/12/input
|
||
20. https://twitter.com/intent/tweet?text=I%27ve+completed+%22Hot+Springs%22+%2D+Day+12+%2D+Advent+of+Code+2023&url=https%3A%2F%2Fadventofcode%2Ecom%2F2023%2Fday%2F12&related=ericwastl&hashtags=AdventOfCode
|
||
21. javascript:void(0);
|