Files
AoC/2022/Day-02/day02-2.py
2022-12-03 12:44:18 +00:00

52 lines
1.2 KiB
Python

#!/usr/bin/python3
# Define points values for each move and outcome.
points = {
'rock': 1,
'paper': 2,
'scissors': 3,
'lose': 0,
'draw': 3,
'win': 6
}
# Map letters to moves.
shapes = {
'A': 'rock',
'B': 'paper',
'C': 'scissors',
}
# Define what move will win/lose for a given move.
wins = {
'rock': ['paper', 'scissors'],
'paper': ['scissors', 'rock'],
'scissors': ['rock', 'paper']
}
# Map letters to the outcome they represent.
outcomes = {
'X': 'lose',
'Y': 'draw',
'Z': 'win'
}
# For each line in the input, work out what move we require and what our score would be.
totalScore = 0
with open('input.txt', 'r') as inputFile:
for line in inputFile:
moves = line.strip().split(' ')
theirMove = shapes[moves[0]]
requiredOutcome = outcomes[moves[1]]
if requiredOutcome == 'win':
requiredMove = wins[theirMove][0]
elif requiredOutcome == 'lose':
requiredMove = wins[theirMove][1]
else:
requiredMove = theirMove
totalScore += (points[requiredOutcome] + points[requiredMove])
# Print the answer.
print(totalScore)