1
0
mirror of https://github.com/chylex/Advent-of-Code.git synced 2025-06-20 23:38:52 +02:00
Advent-of-Code/2022/03/main.py
2022-12-03 18:25:35 +01:00

27 lines
735 B
Python

from itertools import chain
from utils.input import read_input_lines
def middle(iterable) -> int:
return int(len(iterable) / 2)
lines = read_input_lines()
compartments = ((set(line[middle(line):]), set(line[:middle(line)])) for line in lines)
misplaced_item_sets = (set.intersection(*compartment) for compartment in compartments)
misplaced_items = chain.from_iterable(misplaced_item_sets)
def get_priority(item: chr) -> int:
if 'a' <= item <= 'z':
return ord(item) - ord('a') + 1
elif 'A' <= item <= 'Z':
return ord(item) - ord('A') + 27
else:
raise ValueError(f"Invalid item: {item}")
total_priority = sum(map(get_priority, misplaced_items))
print(f"Total priority: {total_priority}")