Day 2 - Advent of Code 2022

Working solutions for the day 2 puzzles.

Part One

""" day_02_01.py """

# usage: python3 day_02_01.py < input

import sys


def score(play):
    """ calculate score for play """
    points = {'A': 1, 'B': 2, 'C': 3}
    cipher = {'X': 'A', 'Y': 'B', 'Z': 'C'}
    wins = {'A': 'C', 'B': 'A', 'C': 'B'}

    opponent, player = play.split()
    value = 0
    if cipher[player] == opponent:
        value = 3
    elif wins[cipher[player]] == opponent:
        value = 6
    return value + points[cipher[player]]


total_score = 0
for game_play in sys.stdin:
    total_score += score(game_play)
print(total_score)

Part Two

""" day_02_02.py """

# usage: python3 day_02_02.py < input

import sys


def score(play):
    """ calculate score for play """
    points = {'A': 1, 'B': 2, 'C': 3}
    wins = {'A': 'C', 'B': 'A', 'C': 'B'}

    opponent, _, player = list(play)
    value = 0
    if player == opponent:
        value = 3
    elif wins[player] == opponent:
        value = 6
    return value + points[player]


def move(strategy):
    """ calculate move from strategy """
    wins = {'A': 'C', 'B': 'A', 'C': 'B'}
    loses = {'A': 'B', 'B': 'C', 'C': 'A'}

    opponent, plan = strategy.split()
    if plan == 'X':
        play = wins[opponent]
    elif plan == 'Y':
        play = opponent
    else:
        play = loses[opponent]
    return f'{opponent} {play}'


total_score = 0
for game_strategy in sys.stdin:
    game_play = move(game_strategy)
    total_score += score(game_play)
print(total_score)