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)