Had a bug in my aoc lib, that lost me an hour for pt 1:
The ADJ dict has SW twice, and lacks NE.
The bug is at least 2 years old. It was introduced in 661f18dca4
and apparently has never worked. I guess it has not been used
up until now.
That being said, it was straight-forward. A new helper for
grid was used the first time, as well as an improved vdbg()
function.
For the first part, I used itertools.combinations
to find the highest pairs of batteries. And as
expected, that solution did not scale well for pt 2.
I figured out that reducing batteries until the top
most 12 (and 2) remained was the correct way to go.
the _maxj(line, C) function is the hive conclusion
from the solution mega thread. I really liked this
brilliant use of a while loop to exlude batteries.
- The first char just skip the while loop. A char
emptying the battery list also does this.
I tried to solve it without regexp at first, failed
brutally. Cut the line count by 80% using a regexp
instead.
It was also funny to get all square roots.