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
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])}")
|
|
|
|
|