Finish 2015.
This commit is contained in:
46
2015/d24.py
Normal file
46
2015/d24.py
Normal file
@@ -0,0 +1,46 @@
|
||||
import sys
|
||||
from itertools import combinations
|
||||
|
||||
with open("i24.txt", "r") as f:
|
||||
weights = list(map(int, f.readlines()))
|
||||
|
||||
total_sum = sum(weights)
|
||||
|
||||
indices = list(range(len(weights)))
|
||||
|
||||
lowest = None
|
||||
def find(part_1=True):
|
||||
if part_1:
|
||||
target_weight = total_sum // 3
|
||||
else:
|
||||
target_weight = total_sum // 4
|
||||
for group_1_size in range(1, len(weights) - 1):
|
||||
for group_1_indices in combinations(indices, group_1_size):
|
||||
group_1_weight = sum(weights[i] for i in group_1_indices)
|
||||
if not group_1_weight == target_weight:
|
||||
continue
|
||||
remaining_indices = list(set(indices) - set(group_1_indices))
|
||||
for group_2_size in range(1, len(remaining_indices) - 1):
|
||||
for group_2_indices in combinations(remaining_indices, group_2_size):
|
||||
group_2_weight = sum(weights[i] for i in group_2_indices)
|
||||
if not group_2_weight == target_weight:
|
||||
continue
|
||||
if part_1 :
|
||||
r = 1
|
||||
for i in group_1_indices:
|
||||
r *= weights[i]
|
||||
return r
|
||||
else:
|
||||
remaining_indices = list(set(indices) - set(group_1_indices))
|
||||
for group_3_size in range(1, len(remaining_indices)- 1):
|
||||
for group_3_indices in combinations(remaining_indices, group_3_size):
|
||||
group_3_weight = sum(weights[i] for i in group_3_indices)
|
||||
if not group_3_weight == target_weight:
|
||||
continue
|
||||
r = 1
|
||||
for i in group_1_indices:
|
||||
r *= weights[i]
|
||||
return r
|
||||
|
||||
print(find(True))
|
||||
print(find(False))
|
||||
Reference in New Issue
Block a user