Description
You descend a short staircase, enter the surprisingly vast lobby, and are quickly cleared by the security checkpoint. When you get to the main elevators, however, you discover that each one has a red light above it: they're all offline.
"Sorry about that," an Elf apologizes as she tinkers with a nearby control panel. "Some kind of electrical surge seems to have fried them. I'll try to get them online soon."
You explain your need to get further underground. "Well, you could at least take the escalator down to the printing department, not that you'd get much further than that without the elevators working. That is, you could if the escalator weren't also offline."
"But, don't worry! It's not fried; it just needs power. Maybe you can get it running while I keep working on the elevators."
There are batteries nearby that can supply emergency power to the escalator for just such an occasion. The batteries are each labeled with their joltage rating, a value from 1 to 9. You make a note of their joltage ratings (your puzzle input). For example:
987654321111111
811111111111119
234234234234278
818181911112111
The batteries are arranged into banks; each line of digits in your input corresponds to a single bank of batteries. Within each bank, you need to turn on exactly two batteries; the joltage that the bank produces is equal to the number formed by the digits on the batteries you've turned on. For example, if you have a bank like 12345 and you turn on batteries 2 and 4, the bank would produce 24 jolts. (You cannot rearrange batteries.)
You'll need to find the largest possible joltage each bank can produce. In the above example:
- In
*98*7654321111111, you can make the largest joltage possible,98, by turning on the first two batteries. - In
*8*1111111111111*9*, you can make the largest joltage possible by turning on the batteries labeled8and9,
producing89jolts. - In
2342342342342*78*, you can make78by turning on the last two batteries (marked7and8). - In
818181*9*1111*2*111, the largest joltage you can produce is92.
The total output joltage is the sum of the maximum joltage from each bank, so in this example, the total output joltage is 98 + 89 + 78 + 92 = *357*.
There are many batteries in front of you. Find the maximum joltage possible from each bank; what is the total output joltage?
--- Part Two ---
The escalator doesn't move. The Elf explains that it probably needs more joltage to overcome the static friction of the system and hits the big red "joltage limit safety override" button. You lose count of the number of times she needs to confirm "yes, I'm sure" and decorate the lobby a bit while you wait.
Now, you need to make the largest joltage by turning on exactly twelve batteries within each bank.
The joltage output for the bank is still the number formed by the digits of the batteries you've turned on; the only difference is that now there will be *12* digits in each bank's joltage output instead of two.
Consider again the example from before:
987654321111111
811111111111119
234234234234278
818181911112111
Now, the joltages are much larger:
- In
*987654321111*111, the largest joltage can be found by turning on everything except some1s at the end to produce*987654321111*. - In the digit sequence
*81111111111*111*9*, the largest joltage can be found by turning on everything except some1s, producing*811111111119*. - In
23*4*2*34234234278*, the largest joltage can be found by turning on everything except a2battery, a3battery, and another2battery near the start to produce*434234234278*. - In
*8*1*8*1*8*1*911112111*, the joltage*888911112111*is produced by turning on everything except some1s near the front.
The total output joltage is now much larger: 987654321111 + 811111111119 + 434234234278 + 888911112111 = *3121910778619*.
What is the new total output joltage?
Notes
- Part 1 was straightforward: break up the process into two parts, 1) find the biggest first value, and then 2) find the biggest second value, all while maintaining the original order of numbers. I used two position cursors and brute forced my way to an answer
- Part 2 had me use Ollama to find a combination iterator generator method so I could take a list of
nnumbers and get all combinations ofllength. I then checked the value of each combination against the bank of batteries and their charges. Whichever combination had the best value was the winner.- Running this against the sample data was instant. Running this against the input data is...very slow, and may not finish -_- (update: it did not finish)
- Tried several ways of optimally selecting for the best set of batteries, keeping order consistent, but no matter what I try, my logic doesn't select even the sample data answers :'(
- Friend posted his recursive Python function that I got translated to Lua and after some more tinkering that ended up doing the trick. Asterisk!