You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
925 B
Python
40 lines
925 B
Python
3 years ago
|
with open("input") as f:
|
||
|
jars = [int(n) for n in f.readlines()]
|
||
|
|
||
|
jars.sort(reverse=True)
|
||
|
|
||
|
combinations = []
|
||
|
|
||
|
|
||
|
def count_remaining_combinations(remaining_eggnog, remaining_jars, used_jars):
|
||
|
if remaining_eggnog == 0:
|
||
|
combinations.append(used_jars)
|
||
|
return 1
|
||
|
if remaining_eggnog < 0:
|
||
|
return 0
|
||
|
if len(remaining_jars) == 0:
|
||
|
return 0
|
||
|
|
||
|
count = 0
|
||
|
|
||
|
for idx, jar in enumerate(remaining_jars):
|
||
|
count += count_remaining_combinations(
|
||
|
remaining_eggnog - jar, remaining_jars[idx + 1 :], used_jars + [jar]
|
||
|
)
|
||
|
|
||
|
return count
|
||
|
|
||
|
|
||
|
count_remaining_combinations(150, jars, [])
|
||
|
|
||
|
minimum_number_of_jars = min([len(x) for x in combinations])
|
||
|
|
||
|
print("Minimum number of jars:", minimum_number_of_jars)
|
||
|
|
||
|
minimal_comninations = [x for x in combinations if len(x) == minimum_number_of_jars]
|
||
|
|
||
|
print(minimal_comninations)
|
||
|
|
||
|
print("Count:")
|
||
|
print(len(minimal_comninations))
|