Day 2
input = """
C Y
A Z
B Y
A Z
A X
A Z
B Y
A Z
B Y
C Z
B Y
C Z
A Z
C Y
B Y
B Y
B Y
C Y
B Y
B Y
A X
B Y
A Y
B Y
B Y
B X
A Y
C Z
C X
A Z
B Y
A X
C Y
C X
C Z
C X
B Y
B Y
B X
A Z
A X
C Y
A Z
C Z
B X
C X
B Y
C X
C Z
C Y
C Z
A Y
A Z
C Z
A Z
A Z
A Z
A Z
B Y
A Z
B Y
B Y
B Y
B X
A Z
B X
C Z
C Z
A Z
A Z
B Y
C Y
A X
C Y
C Y
B Z
B Y
C X
A X
A Z
C Z
C X
B Y
A X
C X
B Y
C X
B Y
C X
B Y
C Y
A Z
C Z
B X
C Y
B Y
A Z
B X
C Z
C Z
B Y
C Z
C X
A X
A Z
A Z
A Y
C Z
C Y
A X
C Z
C Y
A Z
C X
B X
A Z
B Y
A Z
B X
C X
A Z
C Y
C Z
B Y
C Y
C X
A Z
C X
C X
B Y
B Z
A X
B X
C Y
A Z
B Y
C Z
B Y
C Z
B X
B Y
B X
B Y
B Y
B Y
C Y
A Z
A Y
A Z
C Z
B Y
C Z
B Y
C Y
A Z
B X
B Y
C Z
A X
A Y
C X
B X
A Z
C X
A Y
A X
A Z
A Z
A Z
B Y
B Y
B Z
B Y
C Y
B Y
A Z
C X
A Z
A X
B Y
A X
C X
C X
A X
B X
C X
C Z
B Y
B Y
C Y
B X
C X
A Z
B Y
B Y
C Z
A Z
B Y
B X
C Z
A Y
B Y
A Y
C Y
C X
A X
B Y
C X
B Z
B Y
B Y
A Z
C Y
B Y
B Y
A Y
B Z
B Z
A Y
B Y
C Y
A Z
B Y
C Z
A Z
B Y
A Z
C Y
A X
B Z
C X
C Y
B Y
C Y
A Z
A Z
B Y
B Y
C Y
A Y
A Y
C Y
A Z
C Y
B X
C X
A X
A Y
A Z
A Y
A Z
B Y
B Y
B Y
A Z
C Y
C Z
A Y
C Y
A Z
A Z
C Z
B Y
A Z
C Z
B Y
C Y
C Z
C X
B Y
A Z
B Y
B Y
A Z
C X
B Y
A Z
B Y
C Y
A Y
A Z
C X
A Z
A Y
C Y
A Z
C Y
C Y
B X
A Z
B Y
A Z
C Y
B Y
B Y
B Y
A Z
C Z
C Y
B Y
C Z
C Y
C Y
C Y
A X
B X
C X
B Y
B Y
B X
B Y
B Y
C Z
B Y
B Z
C X
B Y
C Y
C Y
B X
A Z
B Y
B Y
A Z
B Y
C Z
B Y
B Y
A Z
C Z
C Z
A Z
C Y
B Y
B Y
C Y
B Z
A Y
C X
A Z
B X
C Y
A Z
C Z
B Y
B X
B Y
B Y
B Y
C Z
A Z
B Y
B X
B Y
B X
B X
C Z
A Z
B Y
C Z
A Z
C Y
C Y
A Z
A Z
A Y
B Y
C X
A Z
B Y
A Z
A Z
A Z
A Y
A Z
A Z
A Y
A X
A Z
C Z
C Y
C Y
C X
A Z
A Y
B Y
A Z
A Z
B Y
B X
B Y
A Z
A X
B Y
C Y
C Y
A Z
C Y
C X
B Y
A X
A X
C Y
A X
C Z
C X
C Y
B Y
A Z
C Y
A Z
A Z
C Z
B Y
A Z
A Y
A X
C X
C X
B Y
C X
B Y
C Z
A Y
B Y
C Y
C X
B Y
C Y
A Z
B Y
A X
C Y
A Y
A Z
A Z
B Y
A Z
A Z
C X
B Y
B Y
A Z
B Y
C Y
C Z
A Z
C Z
C Z
B Y
A Z
B Y
A Z
B Z
C Z
A Y
B Y
B Y
B Y
C Y
A X
A X
B X
B Y
C Z
C Y
C Y
C Y
A X
B Y
B Y
C Z
C X
B Y
A X
A Z
C Y
C Y
A Z
A Z
C Z
A Z
C Y
B Y
A X
B Y
C Z
A Z
A Y
B Y
B Z
C Y
C Y
C X
B Y
C Y
C Y
C Y
C Z
B Y
A Y
A Y
A Z
B Y
C X
B X
B X
B X
A Z
B Y
C Z
C Z
C X
B Y
B Y
B Y
A X
A Z
A Z
B Y
C Y
B Y
C Y
B X
A Z
B Y
B Y
B Y
B Y
B Y
B Y
C X
A Y
B Y
B Y
C Y
A Z
B Y
C X
B X
C Z
C X
A X
C X
B Y
B Y
C X
B Y
C Y
A Z
B Y
A X
C Y
A X
C Y
C Y
B Y
A Y
A Z
B Y
C Z
C Z
B Y
C Z
A Z
A Y
A Z
C Y
C Z
B Y
C Z
A Z
C X
A Y
C Z
A Z
B Y
C Z
C Y
B Y
A Z
B X
A Z
B X
C Z
B Y
A X
C Y
A Z
C Y
B Y
B Y
B Y
C Y
B Y
B Y
C X
A Z
A Z
B Y
C Y
C Z
C X
A Z
C Y
B X
B Y
A X
B Y
A Z
A Z
B Y
B X
C Z
C X
B Z
A Y
B Y
B Z
C Y
A Z
B X
C Y
B Y
C Z
B Z
A Y
A X
C X
B Y
C Y
A X
A Z
B Y
A Y
B Z
C X
B Y
C Y
C X
A Z
A Y
A Z
B Y
C Z
B X
A X
B Y
B Z
A Z
C Y
C X
A Z
C Y
C Z
B X
A Z
B X
A Z
A Z
C Y
B Z
C Y
C Y
B Y
C X
B X
A X
A Z
C Z
B X
B X
B X
B Z
B Y
B Z
C Y
B Y
C Y
C Z
A Z
A X
B Y
B Y
B Y
B Y
C X
B Y
B Y
A X
C X
B Y
C Z
C Y
A Z
A Y
B Y
C Y
B Y
C X
C X
B Y
B Y
B Y
C Y
A Z
A Y
C X
A Z
A Z
B Y
C X
C Y
B Y
B Y
C Y
C X
B X
C Y
B X
A Z
B Y
C X
B X
C Y
C Y
A Z
B Y
A Z
C Y
A Z
A Z
C Z
C X
C Y
A Z
C Z
A Z
B Y
A X
B Y
B Y
A Z
C X
B Z
B Y
C X
A Y
B Y
A Z
C Z
A Z
A Z
A Z
B Y
B Y
B X
B Y
B Y
B Y
C Z
B Y
A Z
C X
C Z
A Z
C Z
C Y
B Y
C Y
B X
C Y
B Y
A Z
B Y
C X
B Y
A Z
C Y
B Y
C Y
C Z
A X
B X
C X
B X
A X
B Y
A X
C Z
B Y
C Z
B Y
B Y
C Z
B Y
A Y
C Z
B Z
A Z
C X
A Z
A Z
B Y
B Y
C Y
C Z
C X
A Y
B Y
B Y
A X
A Y
B X
C Z
C Z
B Y
C Y
B Y
C X
B Z
A Z
A Z
B Y
A Y
A Y
A X
A Z
B Y
A X
B Z
C Z
B X
C Z
B X
B Y
A Y
B X
A Z
A Z
C Z
A X
C Z
B Y
A Y
C Z
C X
B Y
B Y
A X
C Y
C X
C Y
C X
A X
B Y
B X
B Y
C Y
C Y
C X
A Y
A Z
C Y
C Y
B Y
B X
B Y
B X
A Z
A Z
C Z
B Y
B Y
B Y
B X
C Z
A Y
A Z
B Y
B Y
B Y
B X
A X
B Y
C Z
A Z
A Z
C Y
C Y
B Y
B Y
A Z
B Y
A X
A Z
C Z
A Z
B Y
C X
B Y
A X
B Y
B X
B Y
B X
C X
A Z
C Z
C Z
B X
A Z
B Y
A Z
B X
B Y
A Z
C Y
B Y
A Z
A X
B Y
A Z
B Y
B Y
C Y
A Z
B Y
B Y
C Y
A Z
C Z
A Z
C Z
B Y
A Z
B Y
A Z
C Y
B Y
A X
A Z
B Y
B Y
C Z
C Z
C Z
B Y
C Y
A X
C X
A X
C Y
A Y
B X
B Y
C Z
B Y
B Y
B X
C Z
B Y
C X
A Z
C X
B Y
A X
C X
C Y
A Z
A X
C Z
C Z
B Y
C Y
A Y
A Z
A Y
C X
C X
B Y
C Y
B Y
A Z
C X
B Y
C Y
A X
A Z
C Y
B Y
B Y
A Y
C X
B Y
C Y
B Y
B X
A Z
C Y
C Y
A X
C X
A Z
C X
B Y
A X
C Z
B Y
C X
B Y
A Z
A Y
B Y
B X
B Y
C Y
C Z
B Y
A Z
A X
B X
C X
C Z
B Y
B Y
C X
C Z
A Z
C Y
C Z
B Y
A Z
B Y
B Y
C Z
C Z
B Y
C Y
B Y
A Z
B X
B Y
B Y
C X
A Z
A Z
B Y
C Y
B Y
A Z
A Y
A X
C Z
C Y
C Z
C Z
C Z
A Z
B Y
C Z
A Z
C Y
A Z
B Y
B Y
B Y
A Z
B Y
B X
B Y
B Y
B Y
B Y
B Y
B Y
A X
C Z
B X
B Y
C X
A Z
B Y
B X
C Y
B Y
C Y
B Y
A Z
B Y
C Y
A X
B Y
C X
B X
B Y
C Z
B X
C X
C Y
C X
C Y
C X
A Z
C X
B Y
A Z
B X
A Z
B X
B X
A Z
C Z
A Z
B X
B Z
C X
C Y
A X
A Z
B X
C Y
A Z
C Z
B Y
B Y
C Y
B Z
B Y
B Y
C Y
C Z
B Y
A Z
A X
B X
B X
C X
A Z
C Y
B Y
B Y
A Z
B Y
A Z
A Z
B Y
B Y
B Y
B Y
C X
B Y
B X
C Z
B X
C X
B X
B Y
B Y
B Y
A Z
B Y
A X
A Y
C X
B X
B Y
B Y
C Z
A Y
C Z
C Y
A Z
C Z
C Z
B X
B Y
A Z
B Y
C X
C Y
C Y
B X
B Y
B Z
A Y
A Z
C X
A X
B X
C X
B Y
B Y
B Y
B X
C X
B Y
A Z
A Z
A Y
B X
C Y
C Z
A Z
A Z
B X
A Z
C Y
B Y
A X
B X
A Z
B Y
B Y
B Y
B Y
C Z
C Z
A Y
B Y
C Z
C Z
B Y
B X
A Z
C Y
C X
A Z
A Z
C Y
C X
C Y
A Y
B Y
C X
B Y
B X
C Z
C X
C Y
B Y
B Y
A Z
B Y
C Z
C Y
B X
B Y
A Z
A Z
B X
B Y
A X
A Z
B Y
B Y
B Y
B Y
B Y
C Y
B Y
B Y
C Y
B Y
B Y
C Z
B Y
A X
C Y
B Y
A Z
B Y
C Z
C Z
C Y
A Y
B Y
A Z
A X
C Y
C Z
C Y
C Z
C Z
C Y
B X
B Y
B Y
C Z
C X
A Y
C Y
B Y
B Y
A Y
A Y
C X
C Y
A Z
A Z
A X
B Z
B X
A X
A Y
A Z
B Y
C Y
B X
B Y
B Y
C Z
C X
B Y
B Y
B Y
B Y
C Y
B Y
B X
C X
C Y
B Y
A Z
A Y
A Z
C Z
C Y
A Z
A Z
B Y
B Y
C Y
A X
B Y
A Z
B Y
A Z
B Y
B X
C X
C Y
A Z
A Y
B Y
C X
A Z
B Y
A Z
C Y
B X
B Y
B X
C Z
C X
B Y
A Z
B Y
B X
A X
C Z
C X
A Z
A Y
A X
A Z
A Z
A Z
C Y
A Z
B Y
A Z
A Z
C Z
B X
B Y
B Y
B Y
B Y
A Z
B Y
C Y
A Z
A Y
B Y
B Y
C Y
C Y
A Z
C Z
A Z
B Y
B Y
A Z
A X
A Z
A Z
C Y
C Z
A Z
C X
A X
B Y
C Y
C X
C Z
B Y
C Y
A Z
A Z
C Z
A Z
A Z
A X
B Y
C Y
A Z
C X
C Y
B Y
C X
B X
B Y
C Y
A Z
A Z
A X
B Y
A Z
B Y
B Y
C Z
C Z
A X
A Y
B Y
C Z
B Y
B Y
C X
A Z
C Z
A X
B Y
A Y
B Y
C Z
B Y
C X
B Y
B X
B Y
B Y
C Y
B X
B Y
A Z
A Z
B Z
A Z
B Y
B Y
A Y
A Z
C Z
C Y
B X
B Y
C Y
B X
C X
B Y
C X
A Z
B Y
B Y
B Y
C Y
B Y
B Z
A Z
B Y
A Z
C Y
B Y
B Y
B Y
B Y
C Z
B Y
B Y
B Y
A Z
C Z
B Y
B X
A Z
C X
C Y
C Z
B Y
A Z
C Y
A Y
A X
C Y
A X
A Z
A Z
B X
B Y
B Y
C Y
B X
B Y
A Z
B X
B Y
C Y
B Y
C X
A Z
A Z
A Z
A Z
C Z
A Y
C Z
C Z
C Z
B X
B Y
B X
A Z
A Y
B Y
A X
C X
C X
B Y
B Y
B Y
A X
A X
B Y
C Z
B Y
A Z
C Y
B Y
B Y
A Z
C Y
C Z
A Y
A Z
B Y
C X
C X
A Z
B Y
C Y
A Z
A Z
C Z
C X
B Y
C Z
C Z
B Y
A Z
A Z
B X
C X
B Y
C Y
B Y
C Y
B Y
B Y
A Z
A Y
B X
C Y
B Y
C X
C X
C Y
A Z
B Y
C Y
B Y
C Y
B Y
A Y
B Y
A Z
C X
C Z
C Z
C Y
B Y
C Y
B X
B X
A X
B Y
A X
B Y
A Z
C X
B Y
A Z
B X
B Z
B Y
B Y
C Y
B Y
A Z
B Y
C Y
C Z
A Z
C Z
B Y
B Y
B Z
A Z
B Y
C Z
B X
A Z
A X
B X
B Y
A X
B Y
C Y
A Z
A Y
B Y
A Z
B Y
A Y
B Y
C Z
C Z
C Y
C Z
B Y
A Z
B X
B Y
C Y
B Y
C Y
C Y
A Z
A Z
C X
A Y
C Z
B Y
B Y
B Y
C Y
B X
C Y
B Y
A Z
A Y
B Y
B Y
B Y
C X
B Y
C Z
A Y
B X
A Z
A Z
C X
B Y
B Y
A Z
A Y
A Y
C Z
A Z
A Y
B Y
C X
A X
A Y
B Y
A X
B Y
B X
C Y
C Z
C X
B Y
C Y
A Z
B X
A Z
B Y
B Y
B Y
C Y
B Z
C Z
C Y
B Y
C Y
B X
A X
B Y
B Y
A X
C Y
C Y
C Z
B X
A Z
C X
A Z
A Z
C Z
C Y
B Y
C Y
C X
A Z
C Z
B Y
A Z
A Z
C Z
A X
B Y
B Y
C Y
A Z
B X
B X
B X
B Y
B Y
B Y
B Y
A X
B Y
B Y
B X
C X
A Z
A Z
A Z
A Z
B Y
A Z
A Z
B X
A Z
C Y
B Y
B Y
B Y
B X
C Z
A Z
B Y
C X
A X
C Z
B Y
C Y
C Z
A Y
C Z
C X
C Y
B Z
B Y
B Y
B Y
A Z
C Z
A Z
A Z
C Z
B X
C Z
C Y
B X
B Y
C Y
B Y
B X
A Y
B Y
A Z
A Z
B Y
B Y
B X
B X
B X
B Y
A Y
C X
C Y
B Y
C X
B X
A Z
B Y
C X
B Y
B Y
B Y
B Y
A Z
B Y
C Z
B Y
C Z
A X
A Z
C Y
B Y
C Z
B Y
A Y
C X
C X
C Y
A Z
B Y
C X
B Y
B Y
A X
C X
A Z
C X
A Z
B Y
C Y
B Y
B Y
C Y
A Z
A X
C X
B X
B Y
B Y
A Y
B Y
B Y
C X
A Z
B Y
A Y
B Y
B Y
B Y
C Y
B Y
C X
B X
B X
C X
A Z
C X
C X
C Z
B Y
B Y
B Y
B Y
C Z
B X
B Y
B Y
A Z
A X
A Y
A Z
C Y
B Y
B Y
C X
B Y
B Y
B X
A Y
C Y
B Y
B Y
B Y
A Z
A Z
B X
C Y
B Y
A X
B Y
B Y
B X
B Y
A Y
C X
B Y
C Y
C Z
A Z
A Z
C Z
C Y
A Z
B Y
B X
B Y
B Y
C Z
B Y
A Z
C X
B Y
A Z
B Y
B Y
B Y
C X
A Z
A X
C Z
B Y
A Z
C Y
A Y
B Y
A Y
B Y
C Y
C Z
B Y
A Z
A Z
B Y
A X
C X
C Z
C X
B X
C Z
B Z
B Y
B X
C Z
B Y
C Y
C Y
A Z
B Y
B Y
B Y
B Y
C Y
A Z
B Y
A Z
C Z
A X
A Z
B Z
A Z
C Y
B Y
C Z
B Y
C Z
A Z
C Z
B Y
B Y
B Y
A Z
B Y
B X
B X
B X
A Z
C Z
C Y
B X
C Z
A X
B Y
C Y
B Y
B X
B Y
A Z
A X
A X
B Y
C Y
C Y
B Y
B Y
A Z
C Y
A X
A Z
C Y
A Z
C Z
C Y
A Z
C Y
C X
A Z
B X
B Y
A X
C Z
C Z
B X
C X
B Y
A Z
C Z
C Y
C Z
C X
C Z
A X
C Z
B X
C Y
C Z
B Y
C X
A Z
A Y
B Y
A Z
B Y
B Y
B X
C Z
B Y
B Y
B X
B Y
C Y
C Z
B X
B Y
C Z
B Y
B Y
B Y
B Y
A Z
C Z
C Y
B X
B X
B Y
B X
C Y
C Y
A Z
A Z
B X
B Y
B Y
C Z
C Z
B Y
A Z
C X
C Y
C X
B Y
B Y
C Z
C X
B Y
C Y
C Z
C Y
C X
C Y
B X
B X
B Y
B Y
B Y
C Z
B X
B Y
C X
C Y
C Y
C X
A Z
B Y
C Y
C Z
B Y
C Y
B Y
A Y
A Z
C Z
C Z
C Y
A X
C X
C Z
C Y
C Z
B X
C Z
B Y
C X
C Y
C Y
A Z
B Y
A Z
B Y
A X
C Z
A Z
C Z
B Y
B Y
B Y
A Z
A X
B Y
B Z
B Y
B Y
A Z
B Y
B Y
C Z
B Z
A Z
C X
B Y
A Y
B Y
C Y
C Y
C X
B Y
B Z
C Y
B Y
A Y
C X
A Z
A Z
B X
C Y
B Y
B Z
A Z
A Z
B Y
A Z
A Z
A Z
C Y
A Z
A Y
A Z
C Z
C Y
B Y
A Z
B X
B Y
A Z
A Y
B X
B Y
C Y
C Z
C Y
B X
C Y
B Y
B Y
A Z
A Z
B Y
C X
A X
A Z
A X
A X
C Y
B Y
C Z
A Z
B Z
B Y
B Y
B Y
C X
B Y
C Z
B Y
B Y
C Z
C Z
A Z
A Z
A Z
A Z
C Y
A Z
A Z
B Y
B Y
A Z
A Z
C X
C Y
A Z
B Z
B Y
C X
C X
B Y
C X
B Y
C Y
C X
B Y
C Z
A X
B Y
B X
B Y
C Y
B Y
A X
C X
B Y
B Y
B X
B Y
A Z
A Z
A Z
A Z
B Z
B Y
B Y
C X
A Z
C Y
B Z
A X
B Y
B X
B Y
A X
C X
B Y
B Y
A Z
B Y
C Z
A Y
B X
C X
B Y
B Y
A Z
C X
C Y
B Y
C Y
C Z
A Y
A Z
B Y
B Y
A Z
C Y
B Y
C Y
C X
C X
C Y
C Z
A Z
C X
B Y
A Z
B Y
C X
B Y
B Y
A Z
A Z
C X
B Y
A Z
B Y
A Y
B X
B Y
B X
A Y
B Y
B X
B Y
A Z
B Y
C Z
B Y
B Y
B Y
A Y
B Y
C Z
B X
B Y
A X
A Z
B Y
A Z
B X
C Y
B Y
B Z
C Y
B Y
C Y
C X
C X
C Z
B Y
B Y
B Y
A Z
B X
A Z
C Z
B Y
A Y
B Y
C Y
A Z
B Y
A Y
B X
B Y
C Y
C Y
A Z
A Z
B Y
C Y
C Z
A Z
A X
B Y
B Y
B Y
B Y
A Z
C Y
A Z
B Y
B Y
C Z
A Z
A X
C Y
B Y
B Y
A Z
B X
C Z
C Y
C Z
C Y
B Y
A Z
A Z
B Y
A Z
A Z
B Z
C X
C X
B Y
C Z
A Z
B X
A X
A Y
C Y
C Y
A Z
C Y
B Y
A Z
A Z
C Y
B Y
A Y
B X
C Z
B Y
B Y
A Z
B Z
C Z
B Y
B Y
B Y
A Y
C Y
A Z
A X
B Y
B Y
B Y
C Z
A X
B Y
B Y
C Y
B X
B Y
A Z
B Y
A Z
A Y
C Y
B Y
B Y
A Z
B X
A Z
A Z
A Z
B Y
A Y
C Z
B Y
B X
B Y
B Y
B Y
B Y
B Y
A X
C Z
B Y
B Y
B Y
C Z
B X
A Y
B X
C Z
B Y
C X
C X
A Z
B Y
B Y
A Z
C X
C X
A Z
B X
B Y
C X
C Z
A X
B X
B Y
"""
Input
The puzzle input is a set of rock paper scissors games. Each line represents a game: the first letter represents the opponents play (A = rock, B = paper, C = scissors), and the second letter represents our play (X = rock, Y = paper, Z = scissors)
Part 1
the solution to part one is the score we would get by following the guide. scores are based on our selection and the result of the round
- Rock - 1 point
- Paper - 2 points
- Scissors - 3 points
- Loss - 0 points
- Tie - 3 points
- Win - 6 points
parse_letter = fn
"A" -> :rock
"B" -> :paper
"C" -> :scissors
"X" -> :rock
"Y" -> :paper
"Z" -> :scissors
end
score_of = fn
:rock -> 1
:paper -> 2
:scissors -> 3
[selection, selection] -> 3
[:rock, :scissors] -> 0
[:scissors, :paper] -> 0
[:paper, :rock] -> 0
[:rock, :paper] -> 6
[:paper, :scissors] -> 6
[:scissors, :rock] -> 6
end
games =
input
|> String.split("\n", trim: true)
|> Enum.map(fn line ->
line
|> String.split(" ", trim: true)
|> Enum.map(&parse_letter.(&1))
end)
games
|> Enum.reduce(0, fn [_, us] = game, score ->
game_score = score_of.(us) + score_of.(game)
score + game_score
end)
Part 2
Now the interpretation of the input changes a bit. The second letter of the line represents the game result we need to achieve. X = loss, Y = tie, Z = win. The solution is the score we achieve following these new instructions. Scoring is unchanged.
parse_letter = fn
"A" -> :rock
"B" -> :paper
"C" -> :scissors
"X" -> :loss
"Y" -> :tie
"Z" -> :win
end
score_of = fn
:loss -> 0
:tie -> 3
:win -> 6
:rock -> 1
:paper -> 2
:scissors -> 3
end
our_play = fn
[selection, :tie] -> selection
[:rock, :loss] -> :scissors
[:rock, :win] -> :paper
[:paper, :loss] -> :rock
[:paper, :win] -> :scissors
[:scissors, :loss] -> :paper
[:scissors, :win] -> :rock
end
games =
input
|> String.split("\n", trim: true)
|> Enum.map(fn line ->
line
|> String.split(" ", trim: true)
|> Enum.map(&parse_letter.(&1))
end)
games
|> Enum.reduce(0, fn [_, result] = game, score ->
our_play_score = game |> our_play.() |> score_of.()
score + our_play_score + score_of.(result)
end)