Python, in guter, alter xkcd 974-Manier kann es nicht nur 2 oder 3, sondern n Nummern…
#!/usr/bin/env python3
import math
def main():
with open("01-input.txt", "r") as file:
input = list(map(int, file))
for sum_of in range(10):
nums = find_sum(input, target := 2020, sum_of)
if nums:
print(
f"The {sum_of} numbers are that sum up to {target}: {nums}"
)
print(f"The result is {math.prod(nums)}")
else:
print(f"There are no {sum_of} numbers that sum up to {target}")
def find_sum(input: list, target: int, sum_of: int) -> tuple[int, int]:
input.sort()
if sum_of < 1:
for number in input:
if number > target:
break
if number == target:
return (number, )
else:
for idx, number in enumerate(reversed(input)):
if number < target:
subtarget = target - number
ret = find_sum(input[:-idx], subtarget, sum_of - 1)
if ret:
return number, *ret
if __name__ == "__main__":
main()