Solve 2015 days 11-18.
This commit is contained in:
34
2015/d15.py
Normal file
34
2015/d15.py
Normal file
@@ -0,0 +1,34 @@
|
||||
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))
|
||||
|
||||
Reference in New Issue
Block a user