Day 3 - Advent of Code 2022

Working solutions for the day 3 puzzles.

Part One

""" day_03_01.py """

# usage: python3 day_03_01.py < input

import string
import sys


def priority(item):
    """ calculate priority of item type """
    if item.islower():
        return string.ascii_lowercase.find(item) + 1
    return string.ascii_uppercase.find(item) + 27


priority_total = 0
with sys.stdin as pipe:
    for items in pipe:
        partition = len(items) // 2
        common_item = (set(items[:partition]) & set(items[partition:])).pop()
        priority_total += priority(common_item)
print(priority_total)

Part Two

""" day_03_02.py """

# usage: python3 day_03_02.py < input

import string


def priority(item):
    """ calculate priority of item type """
    if item.islower():
        return string.ascii_lowercase.find(item) + 1
    return string.ascii_uppercase.find(item) + 27


priority_total = 0
while True:
    try:
        common_item = (set(input()) & set(input()) & set(input())).pop()
    except EOFError:
        break
    else:
        priority_total += priority(common_item)
print(priority_total)