Files
aocpy/2015/d15.py
2024-02-01 19:21:22 -05:00

35 lines
741 B
Python

import lib
data = open(0).read().strip()
part_1 = True
def maximize(tspr, score, ks):
if ks == [] or tspr == 0:
r = 1
for s in score[:-1]:
if s < 0:
return 0
r *= s
if part_1:
return r
elif score[-1] == 500:
return r
else:
return 0
m = 0
for tsp in range(tspr + 1):
dscore = [v * tsp for v in ks[0]]
nscore = list(map(sum, zip(score, dscore)))
nm = maximize(tspr - tsp, nscore, ks[1:])
m = max(m, nm)
return m
ks = []
for line in data.splitlines():
k = lib.str_to_ints(line)
ks.append(k)
score = [0 for _ in range(len(ks[0]))]
print(maximize(100, score, ks))