2025 Day 10 Solved!
This commit is contained in:
185
2025/day10/problem
Normal file
185
2025/day10/problem
Normal file
@@ -0,0 +1,185 @@
|
||||
Advent of Code
|
||||
br0xen [7](AoC++) 20*
|
||||
|
||||
--- Day 10: Factory ---
|
||||
|
||||
Just across the hall, you find a large factory. Fortunately, the Elves
|
||||
here have plenty of time to decorate. Unfortunately, it's because the
|
||||
factory machines are all offline, and none of the Elves can figure out the
|
||||
initialization procedure.
|
||||
|
||||
The Elves do have the manual for the machines, but the section detailing
|
||||
the initialization procedure was eaten by a [16]Shiba Inu. All that
|
||||
remains of the manual are some indicator light diagrams, button wiring
|
||||
schematics, and [17]joltage requirements for each machine.
|
||||
|
||||
For example:
|
||||
|
||||
[.##.] (3) (1,3) (2) (2,3) (0,2) (0,1) {3,5,4,7}
|
||||
[...#.] (0,2,3,4) (2,3) (0,4) (0,1,2) (1,2,3,4) {7,5,12,7,2}
|
||||
[.###.#] (0,1,2,3,4) (0,3,4) (0,1,2,4,5) (1,2) {10,11,11,5,10,5}
|
||||
|
||||
The manual describes one machine per line. Each line contains a single
|
||||
indicator light diagram in [square brackets], one or more button wiring
|
||||
schematics in (parentheses), and joltage requirements in {curly braces}.
|
||||
|
||||
To start a machine, its indicator lights must match those shown in the
|
||||
diagram, where . means off and # means on. The machine has the number of
|
||||
indicator lights shown, but its indicator lights are all initially off.
|
||||
|
||||
So, an indicator light diagram like [.##.] means that the machine has four
|
||||
indicator lights which are initially off and that the goal is to
|
||||
simultaneously configure the first light to be off, the second light to be
|
||||
on, the third to be on, and the fourth to be off.
|
||||
|
||||
You can toggle the state of indicator lights by pushing any of the listed
|
||||
buttons. Each button lists which indicator lights it toggles, where 0
|
||||
means the first light, 1 means the second light, and so on. When you push
|
||||
a button, each listed indicator light either turns on (if it was off) or
|
||||
turns off (if it was on). You have to push each button an integer number
|
||||
of times; there's no such thing as "0.5 presses" (nor can you push a
|
||||
button a negative number of times).
|
||||
|
||||
So, a button wiring schematic like (0,3,4) means that each time you push
|
||||
that button, the first, fourth, and fifth indicator lights would all
|
||||
toggle between on and off. If the indicator lights were [#.....], pushing
|
||||
the button would change them to be [...##.] instead.
|
||||
|
||||
Because none of the machines are running, the joltage requirements are
|
||||
irrelevant and can be safely ignored.
|
||||
|
||||
You can push each button as many times as you like. However, to save on
|
||||
time, you will need to determine the fewest total presses required to
|
||||
correctly configure all indicator lights for all machines in your list.
|
||||
|
||||
There are a few ways to correctly configure the first machine:
|
||||
|
||||
[.##.] (3) (1,3) (2) (2,3) (0,2) (0,1) {3,5,4,7}
|
||||
|
||||
• You could press the first three buttons once each, a total of 3 button
|
||||
presses.
|
||||
• You could press (1,3) once, (2,3) once, and (0,1) twice, a total of 4
|
||||
button presses.
|
||||
• You could press all of the buttons except (1,3) once each, a total of
|
||||
5 button presses.
|
||||
|
||||
However, the fewest button presses required is 2. One way to do this is by
|
||||
pressing the last two buttons ((0,2) and (0,1)) once each.
|
||||
|
||||
The second machine can be configured with as few as 3 button presses:
|
||||
|
||||
[...#.] (0,2,3,4) (2,3) (0,4) (0,1,2) (1,2,3,4) {7,5,12,7,2}
|
||||
|
||||
One way to achieve this is by pressing the last three buttons ((0,4),
|
||||
(0,1,2), and (1,2,3,4)) once each.
|
||||
|
||||
The third machine has a total of six indicator lights that need to be
|
||||
configured correctly:
|
||||
|
||||
[.###.#] (0,1,2,3,4) (0,3,4) (0,1,2,4,5) (1,2) {10,11,11,5,10,5}
|
||||
|
||||
The fewest presses required to correctly configure it is 2; one way to do
|
||||
this is by pressing buttons (0,3,4) and (0,1,2,4,5) once each.
|
||||
|
||||
So, the fewest button presses required to correctly configure the
|
||||
indicator lights on all of the machines is 2 + 3 + 2 = 7.
|
||||
|
||||
Analyze each machine's indicator light diagram and button wiring
|
||||
schematics. What is the fewest button presses required to correctly
|
||||
configure the indicator lights on all of the machines?
|
||||
|
||||
Your puzzle answer was 455.
|
||||
|
||||
--- Part Two ---
|
||||
|
||||
All of the machines are starting to come online! Now, it's time to worry
|
||||
about the joltage requirements.
|
||||
|
||||
Each machine needs to be configured to exactly the specified joltage
|
||||
levels to function properly. Below the buttons on each machine is a big
|
||||
lever that you can use to switch the buttons from configuring the
|
||||
indicator lights to increasing the joltage levels. (Ignore the indicator
|
||||
light diagrams.)
|
||||
|
||||
The machines each have a set of numeric counters tracking its joltage
|
||||
levels, one counter per joltage requirement. The counters are all
|
||||
initially set to zero.
|
||||
|
||||
So, joltage requirements like {3,5,4,7} mean that the machine has four
|
||||
counters which are initially 0 and that the goal is to simultaneously
|
||||
configure the first counter to be 3, the second counter to be 5, the third
|
||||
to be 4, and the fourth to be 7.
|
||||
|
||||
The button wiring schematics are still relevant: in this new joltage
|
||||
configuration mode, each button now indicates which counters it affects,
|
||||
where 0 means the first counter, 1 means the second counter, and so on.
|
||||
When you push a button, each listed counter is increased by 1.
|
||||
|
||||
So, a button wiring schematic like (1,3) means that each time you push
|
||||
that button, the second and fourth counters would each increase by 1. If
|
||||
the current joltage levels were {0,1,2,3}, pushing the button would change
|
||||
them to be {0,2,2,4}.
|
||||
|
||||
You can push each button as many times as you like. However, your finger
|
||||
is getting sore from all the button pushing, and so you will need to
|
||||
determine the fewest total presses required to correctly configure each
|
||||
machine's joltage level counters to match the specified joltage
|
||||
requirements.
|
||||
|
||||
Consider again the example from before:
|
||||
|
||||
[.##.] (3) (1,3) (2) (2,3) (0,2) (0,1) {3,5,4,7}
|
||||
[...#.] (0,2,3,4) (2,3) (0,4) (0,1,2) (1,2,3,4) {7,5,12,7,2}
|
||||
[.###.#] (0,1,2,3,4) (0,3,4) (0,1,2,4,5) (1,2) {10,11,11,5,10,5}
|
||||
|
||||
Configuring the first machine's counters requires a minimum of 10 button
|
||||
presses. One way to do this is by pressing (3) once, (1,3) three times,
|
||||
(2,3) three times, (0,2) once, and (0,1) twice.
|
||||
|
||||
Configuring the second machine's counters requires a minimum of 12 button
|
||||
presses. One way to do this is by pressing (0,2,3,4) twice, (2,3) five
|
||||
times, and (0,1,2) five times.
|
||||
|
||||
Configuring the third machine's counters requires a minimum of 11 button
|
||||
presses. One way to do this is by pressing (0,1,2,3,4) five times,
|
||||
(0,1,2,4,5) five times, and (1,2) once.
|
||||
|
||||
So, the fewest button presses required to correctly configure the joltage
|
||||
level counters on all of the machines is 10 + 12 + 11 = 33.
|
||||
|
||||
Analyze each machine's joltage requirements and button wiring schematics.
|
||||
What is the fewest button presses required to correctly configure the
|
||||
joltage level counters on all of the machines?
|
||||
|
||||
Your puzzle answer was 16978.
|
||||
|
||||
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.
|
||||
|
||||
References
|
||||
|
||||
Visible links
|
||||
1. https://adventofcode.com/
|
||||
2. https://adventofcode.com/2025/about
|
||||
3. https://adventofcode.com/2025/events
|
||||
4. https://adventofcode.com/2025/shop
|
||||
5. https://adventofcode.com/2025/settings
|
||||
6. https://adventofcode.com/2025/auth/logout
|
||||
7. Advent of Code Supporter
|
||||
https://adventofcode.com/2025/support
|
||||
8. https://adventofcode.com/2025
|
||||
9. https://adventofcode.com/2025
|
||||
10. https://adventofcode.com/2025/support
|
||||
11. https://adventofcode.com/2025/sponsors
|
||||
12. https://adventofcode.com/2025/leaderboard/private
|
||||
13. https://adventofcode.com/2025/stats
|
||||
14. https://adventofcode.com/2025/sponsors
|
||||
15. https://adventofcode.com/2025/sponsors/redirect?url=https%3A%2F%2Fcoderabbit%2Elink%2Fadventofcode
|
||||
16. https://en.wikipedia.org/wiki/Shiba_Inu
|
||||
17. https://adventofcode.com/2025/day/3
|
||||
18. https://adventofcode.com/2025
|
||||
19. https://adventofcode.com/2025/day/10/input
|
||||
Reference in New Issue
Block a user