34 lines
923 B
Python
34 lines
923 B
Python
import math
|
|
|
|
items = (int(x.strip()) for x in open("input.txt"))
|
|
values = {(2020, 3)}
|
|
tree = dict()
|
|
|
|
|
|
def tree_up(idx, step=1, offset = 0):
|
|
print(idx, step)
|
|
next = tree[(idx, step)] if (idx, step) in tree else None
|
|
appendix = [] if next is None else tree_up(next+idx, step=step+1, offset=idx)
|
|
return [idx - offset] + appendix
|
|
|
|
|
|
for item in items:
|
|
tmp_values = set(values)
|
|
for elem in values:
|
|
new = (elem[0] - item, elem[1]-1)
|
|
if new == (0, 0):
|
|
vals = tree_up(item)
|
|
print("Found [{}]: Sum={}, Product={}".format(
|
|
", ".join(map(str, vals)),
|
|
sum(vals),
|
|
math.prod(vals)
|
|
))
|
|
exit(0)
|
|
elif new[0] < 0 or new[1] < 0:
|
|
# target value too low or to many sums
|
|
continue
|
|
else:
|
|
tree[new] = item
|
|
tmp_values.add(new)
|
|
values = tmp_values
|