49 lines
1.8 KiB
Python
49 lines
1.8 KiB
Python
SCORES = [
|
|
{"id": "A", "name": "rock", "wins_over": "C", "points": 1},
|
|
{"id": "B", "name": "paper", "wins_over": "A", "points": 2},
|
|
{"id": "C", "name": "scissors", "wins_over": "B", "points": 3},
|
|
{"id": "X", "name": "rock", "wins_over": "C", "points": 1, "strategy": "lose"},
|
|
{"id": "Y", "name": "paper", "wins_over": "A", "points": 2, "strategy": "draw"},
|
|
{"id": "Z", "name": "scissors", "wins_over": "B", "points": 3, "strategy": "win"},
|
|
]
|
|
|
|
with open("input", "+r") as file:
|
|
total_score = 0
|
|
for line in file.readlines():
|
|
them, us = map(lambda x: x.strip(), line.split())
|
|
our_game = list(filter(lambda x: x["id"] == us, SCORES))[0]
|
|
their_game = list(filter(lambda x: x["id"] == them, SCORES))[0]
|
|
|
|
if our_game["wins_over"] == them:
|
|
total_score += our_game["points"] + 6
|
|
continue
|
|
|
|
if our_game["name"] == their_game["name"]:
|
|
total_score += our_game["points"] + 3
|
|
continue
|
|
|
|
total_score += our_game["points"]
|
|
|
|
print("part 1:", total_score)
|
|
|
|
with open("input", "+r") as file:
|
|
total_score = 0
|
|
for line in file.readlines():
|
|
them, us = map(lambda x: x.strip(), line.split())
|
|
our_game = list(filter(lambda x: x["id"] == us, SCORES))[0]
|
|
their_game = list(filter(lambda x: x["id"] == them, SCORES))[0]
|
|
|
|
match our_game["strategy"]:
|
|
case "lose":
|
|
strategy = list(
|
|
filter(lambda x: x["id"] == their_game["wins_over"], SCORES)
|
|
)
|
|
total_score += strategy[0]["points"]
|
|
case "win":
|
|
strategy = list(filter(lambda x: x["wins_over"] == them, SCORES))
|
|
total_score += 6 + strategy[0]["points"]
|
|
case _:
|
|
total_score += 3 + their_game["points"]
|
|
|
|
print("part 2:", total_score)
|