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.

39 lines
1.2 KiB
Python

from rucksack.file.rucksack_loader import RucksackLoader
from rucksack.ItemPriorities import item_priority
from entities.elf import Elf
if __name__ == "__main__":
rs = RucksackLoader("./input/day3/input.lst").parse_file()
i = item_priority
groups = []
curr_group = []
for rucksack in rs: # creating groups of 3
elf = Elf()
curr_group.append((elf, rucksack))
if len(curr_group) >= 3:
groups.append(curr_group)
curr_group = []
group_badges = []
for i in range(len(groups)):
group = groups[i]
dup1 = Elf.check_rucksacks_for_duplicates(group[0][1], group[1][1])
dup2 = Elf.check_rucksacks_for_duplicates(group[0][1], group[2][1])
r = Elf.check_compartments_for_duplicates(dup1, dup2)
if r:
final_dup = r
print(f"Group #{i} has the badge item {final_dup} ({item_priority[final_dup]})")
else:
final_dup = None
raise ValueError(f"Found no badge item for Group #{i}")
group_badges.append(final_dup)
print("")
print(f"The priority sum is: {sum([item_priority[c] for c in group_badges])}")