2025(03): make code a bit better
And clean up part 2 of day 2, add testinput for day 1.
This commit is contained in:
@ -1,39 +1,26 @@
|
||||
# I did not do anything to prevent the main code from running in part1.
|
||||
#from part1 import bruteforce_joltage
|
||||
|
||||
debug=False
|
||||
|
||||
def joltage_limit_safety_override(battery, jol_len=12):
|
||||
"""
|
||||
|
||||
|
||||
"""
|
||||
|
||||
jol_indices = []
|
||||
idx_seek_start = 0
|
||||
for i in range(jol_len):
|
||||
if debug:
|
||||
print(f"Look for number {i}")
|
||||
# Define where to search:
|
||||
# * after the found numbers
|
||||
# * but leaving enough numbers for the other seeks
|
||||
subbattery = battery[idx_seek_start:-(jol_len - i + 0)]
|
||||
|
||||
# Find, in order, the highest possible number allowed.
|
||||
for num in range(10):
|
||||
needle = str(9 - num)
|
||||
if debug:
|
||||
print(f"Try to find number {needle} in:")
|
||||
subbattery = battery[idx_seek_start:-(jol_len - i + 0)]
|
||||
if debug:
|
||||
print(subbattery)
|
||||
if not needle in subbattery:
|
||||
if debug:
|
||||
print("not found")
|
||||
continue
|
||||
idx_needle = subbattery.index(needle)
|
||||
jol_indices.append(idx_needle + idx_seek_start)
|
||||
idx_seek_start = idx_needle + idx_seek_start + 1
|
||||
if debug:
|
||||
print("found")
|
||||
break
|
||||
if debug:
|
||||
print(jol_indices)
|
||||
print(int("".join([battery[i] for i in jol_indices])))
|
||||
needle = max(subbattery)
|
||||
idx_needle = subbattery.index(needle)
|
||||
|
||||
# Add needle index to list and update starting point
|
||||
jol_indices.append(idx_needle + idx_seek_start)
|
||||
idx_seek_start = idx_needle + idx_seek_start + 1
|
||||
return int("".join([battery[i] for i in jol_indices]))
|
||||
|
||||
# Test testinput
|
||||
|
||||
Reference in New Issue
Block a user