Day 2: Rock Paper Scissors
Section
input = """
C Y
C Y
B Y
A Z
B Z
A X
A Y
A Y
A X
A Y
B Y
A Y
B Y
B Y
B Z
B Z
B Z
B Z
A Y
B Z
A Y
B X
B Y
B X
A X
A X
B Z
A X
A X
B Z
B Z
B Y
B Z
B Z
B Z
B Y
A X
A X
B Z
A X
B X
B X
C Y
B Z
C X
A X
A Y
B Y
A Y
B X
A X
B Y
B Z
B Z
B Y
B Z
C Z
B X
B X
B Z
B Z
B Z
B Z
A Y
B X
A X
C X
B Y
B Z
A Y
B Z
B Z
B Y
B Y
B Z
B Y
B Z
A X
B X
B X
A X
A X
B Z
B Z
B Z
B Z
B Y
B X
B Z
A X
A Y
B Z
A Y
B Z
B Y
B Z
A X
B Y
A Y
B Z
A Z
A Y
A Y
C Y
B Z
B X
A Z
B Z
A X
B Z
A Z
B Z
A X
B Y
A X
B Y
B Z
B X
B X
B Z
B Z
B Z
A X
B Z
A X
B X
B Z
A X
C Z
B Z
B Z
B Y
B Y
B Y
B Z
B Z
A Y
B Z
B Z
C Y
C Z
A X
B Z
B X
B Z
B Z
B Y
A X
B Z
B Y
A Z
B Z
A X
A X
B Y
A Y
B Z
B Z
B X
B Y
A X
A Y
B X
C Z
A Y
B Z
B Z
B Z
A Z
C Y
B Y
B Y
B Z
C Y
B Y
B X
B X
B Z
C Z
A X
B Z
B Z
B Z
B Z
B X
B X
A X
A Z
A Z
A X
C Y
B X
A X
A Y
A X
B X
A Y
B Z
B Z
A Y
A X
B Y
B Z
B Z
A X
A Z
B Z
B X
A X
B Z
B Y
A Y
A Z
B X
A Y
B Z
A Z
B Z
A Y
B Z
B X
B Y
A Y
B Z
B Z
A X
A X
B Y
B Z
A X
B Z
B Z
B Z
B Z
B Z
A Z
B Z
B Z
B X
A Y
C X
B Z
B Y
B Y
B Z
B Z
B Z
B Y
B X
B Y
C X
B Z
A Z
A Y
C X
A X
B X
A X
B X
A Y
B Z
A Y
A Y
B Z
B X
B Z
A Y
B Z
B X
C Z
C X
C Z
B Y
B X
B Z
B Z
B Y
B Z
B Y
B Z
A X
B X
B Z
A X
B Z
B Y
B Z
A X
B Y
C Y
A Z
B Z
C Z
A Y
B Z
A Y
A Z
B Y
A X
A X
B Z
B Z
B Z
A Y
B Z
A Z
B Z
A Y
A Z
B Y
C Z
B Z
A Z
B X
B Z
B Y
B Z
A Z
A Z
B Z
B X
C Z
B X
B Z
B Y
A X
B Z
A X
B X
B Z
B Z
A X
B X
C X
C X
B X
B Y
B Z
B X
B Y
B Y
B Z
A Z
B Z
C X
A Y
C X
B Z
A Y
B Z
B Y
B Z
B X
A X
B X
B Z
A Y
A Y
B Z
B Z
B Z
A Y
B Z
B X
C X
B Z
B Z
C Y
B Z
C Y
B Z
C Y
C X
B Z
C Y
A Y
A Y
C Z
B Z
B X
B Z
B X
C Z
B Z
A Z
B Z
C Y
B Z
A X
A Y
B Y
B Y
B Z
A Y
B X
B Z
B Z
A Z
B X
A Y
A Y
B Z
B Z
B Z
C X
A Z
B X
C Z
B Y
B Z
B X
A Y
B Z
A X
B X
B Y
A Y
B Z
B Z
B Y
A Z
B Z
A X
B Y
A Y
A X
A Y
A X
A X
B X
B Y
B X
B Y
B Z
B Y
B X
A X
B Z
A Z
A X
B Z
B Y
A X
B Y
A X
B X
C Y
B X
B X
B X
C Y
B X
B Y
B Y
B Y
B Y
B X
A Y
C Y
B Z
B Z
B X
B Z
C Y
B Y
B Z
B Z
B Y
B Z
A X
B X
B Y
A X
C Y
B Z
A Y
B Z
B Z
B Z
A X
B Y
B Z
B Y
B Z
A X
B Z
A X
B Y
B Y
B X
B X
A Y
B Z
C Y
A X
A X
B X
B Z
B X
B X
B Z
B Z
A X
B X
B Z
A Z
B Y
A X
B Z
C Y
B Z
B X
B Z
B Z
A Y
A Y
B Z
B X
B Y
B Z
A Y
A Y
B X
B X
C X
B Z
C Z
B X
A Y
B Z
A Z
B Y
A Y
B Z
B X
B X
A Y
B Z
B Y
A X
B Y
B Y
B Y
B X
B Y
B Z
B Y
B Y
A X
C Z
B Z
B Z
A Z
B Z
B Z
A X
B X
A Y
A X
B X
C X
B X
B Z
B Y
A Z
A Y
B Y
B Z
B X
B X
B Z
B Z
B Y
A X
B Z
A Y
A X
B Y
B Z
B Z
B X
A X
A Y
C X
A Y
B Z
B Y
B Z
B Z
C Z
B Z
B X
A X
C Y
B X
B Z
A Z
A X
A Y
B Z
B Z
A Y
A Y
B X
A Y
A Y
B Z
A Y
B Y
B Z
A Y
A Z
B X
B X
B Y
B Z
B Z
A X
B X
C X
B Y
A Y
A X
A X
A X
B Y
A X
A Z
A Y
B X
A Y
B Z
C X
B X
B X
B Z
B X
B X
B Z
A X
B Z
B X
B Z
A Y
B Y
B Z
B Y
B Z
B Z
A X
B Z
A Y
C Z
A Y
B Z
A Y
B X
B Z
B X
C Y
A X
B Z
B Y
A X
A X
B X
B Z
A Z
B Z
B X
B X
B X
B Z
B Z
B Y
B X
B X
A X
B Z
B X
A X
A X
A X
B X
B Z
A Z
B X
B Y
B Y
B Z
B Z
C Z
A Y
A X
B Y
B X
B Z
B X
A X
B Z
B Z
B Y
B Z
B X
B Z
B Z
B X
B X
A X
A X
B X
B Z
B Z
C X
C X
B Z
B Z
B X
B Z
B Y
B X
A X
B Y
A Y
A X
B Z
B Z
C X
B Y
B Z
B Z
B X
B Z
B Z
C Z
B Z
B Y
B Z
B X
A X
B X
B Z
B Z
A Y
B Z
B Z
B Z
B Z
A X
B Z
B Z
B X
B Y
B Y
B Z
A X
B Z
B Y
B X
A X
B X
B Z
B Z
B Z
B X
B Z
B Z
B Z
A Y
B Z
C X
B Y
B Y
B Y
A Y
B Z
B Z
A X
C Z
B Z
B Z
B Z
B X
B Z
A Z
B Z
B Z
B Z
A Z
B Z
C Y
B X
A X
A Y
B Z
B Z
A Z
B Z
B X
A Z
B Y
B Z
B X
B Z
B X
B Y
B Z
A X
B Z
B Z
A Y
B X
B X
B X
A Z
C X
A Z
B Z
B Z
B Z
B X
A Y
C X
A Z
A Y
B X
B Z
B X
B Z
B Y
A Y
B X
C X
A Y
C Z
A X
B Z
B Z
A Z
B X
B Y
B Z
A Y
B Y
A X
A X
C Y
A Y
B X
A X
B Y
B X
B Y
A Y
A X
C Y
B Y
B Y
B Z
B Y
B X
B Z
B Z
B X
A X
B Z
B Z
B Z
B X
B Z
B X
B Z
B Z
B Y
B Y
B X
A X
B Z
B Y
A Y
B Z
B X
B Z
B Z
A Z
B Z
A Y
B Z
A X
B Z
B Z
A Y
B Z
A X
B Z
A Y
A Y
A Z
B X
B Z
B Y
A Z
C Z
B Z
A X
A X
B X
A Z
B X
B X
B Z
C X
B Z
B Z
B Z
B Z
B X
A Z
A Y
B Z
B Y
C Z
B Y
B Z
A Y
B X
B X
B Z
A X
A Y
B Z
B X
B Y
A Y
C Y
C Y
B Z
A Y
B Y
A Y
B Z
B Z
A X
B X
A X
B X
A Y
A X
B Z
A X
B Z
B X
B Z
B X
B X
A X
A Y
B Z
B X
B X
A X
A Y
A X
B Y
B Z
B Z
B Z
B Z
B Z
B X
B Y
A Y
B X
B Z
A Y
B X
A X
B Z
C X
B Y
A Y
A X
A X
B X
B X
B Z
B Z
B Z
B X
B Y
B X
B Z
B X
B Y
B X
B Z
B X
B Y
B X
B Z
B Z
B Z
A X
C X
C Y
A Y
B X
B X
A Y
B Z
B X
B Z
B X
B X
C X
B Z
B Z
B Y
A Z
A Z
C X
B X
C Y
B Z
C X
B Z
A Y
C Z
B X
B Y
A Y
B Y
B X
B Z
A Y
A Z
C X
B Z
A X
B X
B Z
C Z
A Y
B Z
B Z
A X
A X
B Z
B Y
C Z
B Z
B X
B Z
A X
A X
B Y
A X
B X
A Y
B Z
A Y
B Z
A Y
B Z
A X
B Y
B Z
B Z
B Z
A X
A X
B X
B Z
A X
B Z
A X
A X
B Z
B Z
B Z
B X
B Y
B Z
B Z
B X
B Z
B Y
B Z
C Y
B X
C Z
B Z
B Z
A Y
B Z
B X
A Y
B Z
B X
B Z
B Z
B Y
B Z
A Z
A Y
B Z
B Z
B Y
A Y
B Z
A X
B X
A Z
A X
B X
B Z
B X
B Z
B Z
B Y
B Y
B Z
B Y
B Z
B Z
A X
B X
B Y
B Y
C Z
A X
B Y
A Y
B Z
B Z
B Z
C X
B X
A Z
B Y
A X
C X
B Z
B Z
B Z
B Y
A Y
A Y
B Y
B Z
B Z
B Z
C X
A X
B Z
A Y
B X
B Z
B Z
B Z
B Z
B X
B Y
B Z
B Z
A Y
C X
A X
B Z
B Z
A Y
A Y
B Z
A Y
B Y
A X
B Z
B Z
A Y
B Z
B Z
A X
A X
B X
B Z
B Z
A X
B Z
B Z
C Y
B Z
A X
B Z
A X
B Z
A X
B X
A X
A Y
B Z
B X
A X
B Z
A X
A Z
B Z
B Z
B Z
A Y
B X
A X
B Y
A Y
B Z
B Z
B X
B Z
B X
B X
A X
B Z
A Y
A X
B X
A Z
B X
B Y
B Z
B X
B X
B Z
C X
A X
B Z
B Y
C Z
B Z
A Z
A Z
A X
A Y
B Z
B Z
B X
A Z
B Z
B Z
B X
B Y
B X
B Z
B X
B Z
A Y
A X
B Z
B X
B Y
B Z
B Z
B Z
B Z
C X
C X
B Z
B X
B Z
B Z
B Z
B X
B Z
B Z
B Z
B X
B Z
B Z
B Z
C Y
B Z
B Y
B Z
A Z
A Y
B Z
A Y
C X
A X
B X
A Y
B Z
A Y
B Z
B Y
B Z
B Z
C Y
B Y
B Z
B Z
B X
B Y
B Z
B Y
B Z
B X
B Y
B Z
B Z
B Z
B Y
B Y
B Z
B Z
C X
B Z
A Y
B Z
B Z
B Y
B Y
B Z
B Z
A Y
B Z
A Z
C X
A Y
A Y
A X
B Z
A X
C Y
A Z
C Y
C X
B Z
A X
A Y
B Z
B Z
B Z
B Z
B Y
A Z
A Y
B Y
A Y
A Z
B X
B Z
B Z
A X
C Y
B Z
B X
C X
A Z
B Z
B X
B Y
A X
A X
B Z
C X
B Z
B Z
B X
B Z
B Z
B Z
A X
B Z
B Y
B Z
B Z
B Y
B X
A X
B Z
A X
A X
B Y
B Z
B X
A Y
C X
B Y
A X
A X
A X
C Y
B X
C Z
A X
B Z
A Z
B Z
A X
A Y
B Z
A X
B X
A Y
A X
A Y
B X
B Y
B Z
B Y
C X
C Y
B Z
B Y
B Z
A X
C Z
B Z
A X
B X
A X
B X
B Z
B X
B Z
B Z
B Z
A X
A X
B Z
B X
B Z
B Z
B Z
A X
B Z
B X
A X
C Z
A Y
B Z
A Y
B Z
B Z
B Z
C Z
B Z
B Z
A X
B X
A X
B X
A X
B Z
B Z
B X
B Z
A X
A Y
A Y
A Y
B Z
B Z
B Z
B Z
A X
B Z
B Z
B Y
B Z
A Z
B Z
A Y
B Y
B Y
C Y
B X
B Z
B Y
B Z
B Y
B Z
B Z
A Y
B X
A Z
B Z
A X
B Y
A X
B Z
B Y
A X
B X
B Z
B Z
B Z
A Y
A Y
A X
A Y
A Y
B X
B Z
B Y
B Y
B X
B Y
B X
B X
B X
B Z
B Z
B Z
A Y
A Z
B Y
C X
B X
B Z
C Y
B Z
C Y
B Z
B Z
B Z
B X
A X
B Z
B Z
A X
B Z
B Z
B Z
B Z
B Z
B Z
B X
A X
A Y
B Y
B Z
B Y
B X
A Z
A X
B X
B Y
B Z
B Z
B Z
B X
C X
B X
A Z
A X
A Y
B Z
B Z
A X
B Z
A Y
B X
B Z
B Y
B Y
A X
B X
B Z
B Z
B Z
B Z
B Y
A Z
A Y
B X
A X
B Y
B Z
C Y
B Z
B Z
B X
A Z
A Y
B Y
B Z
A Y
B Y
A Y
A X
A Y
B Y
C X
C Z
B X
A Z
A X
B Y
B X
A X
B Z
A Y
A Z
B Z
B Z
B Z
A X
B Z
B Y
B Z
A X
A Y
B Z
B X
C X
B Z
A Y
B Z
B Z
B X
B Z
B Z
A Y
A X
B Z
C Y
A Y
B Y
B Z
A X
B Z
B Z
B Z
B Z
C X
B Y
B Z
B X
B Z
B Z
B Z
B Z
B Z
B Y
A X
B Y
A Y
A X
A X
B Z
B Z
B Z
C X
B X
B Z
A X
A X
B Y
A X
B Z
B Z
B X
B Y
B Y
B Y
A Y
A Y
A X
A X
B Z
B Y
B Y
B X
B Y
B Z
A Z
B Z
A Z
B X
B Y
C Y
B X
B X
A X
A X
A X
A X
B Z
B Z
A Z
B X
B X
B X
B X
B X
B Z
B Z
B Z
B Z
B Z
B Y
B Z
B Z
A Y
A Z
C Y
B Y
A X
B Z
B X
A Y
B Y
A Y
C Z
A X
A Y
B X
B X
C Z
B Y
A Y
A Y
A X
B X
A X
B X
A Y
B Z
B Z
A Z
B X
B Z
B Z
B Y
A Y
B Z
B Y
B Z
B Z
B Z
C X
B Y
A Y
B Z
A Y
A Y
A X
B X
B Y
C Y
C X
B Z
B Z
B Z
A Y
A Z
B Y
B X
B X
B Y
B Z
B Z
A Y
B Y
B Z
B Z
B Z
A X
C Y
B Z
A Z
C Z
B X
B Y
B Z
A Z
A X
B X
A X
C X
B Z
A X
B Y
C Y
B Y
B Z
B X
A Y
B Z
B Z
B Z
A X
B Z
B Z
B Z
B Z
A X
B Z
B X
B X
B Z
C X
A Y
B Z
B X
B Z
B Y
B Z
B Y
C Y
A X
B Y
B Z
B Z
B X
B Z
A X
B Z
A X
B Y
B Z
A X
B Z
B X
A Z
B Z
C X
B Z
B Y
B Y
B Y
B Z
B X
B X
A X
A X
B Z
B Z
A X
A X
A Z
A Y
C Z
B Z
B Y
C X
B X
B Y
B Y
A Y
B Z
B Z
B Y
C Y
B Z
A Y
B Z
B Z
B Z
B Z
A Y
B Z
B Z
B Z
A X
B X
A Y
B Y
B Z
B Z
B Z
A Y
B Z
B Z
B Z
B Y
B Y
B X
B X
B Y
C Z
B X
B Y
C Y
A Y
B Z
A Z
B Z
A Y
B X
B Z
B X
C Z
A Y
B X
B Z
A X
A X
B Z
B Z
B Y
B Z
C Y
C X
B Z
B Z
A X
B X
A Y
B Y
B Y
C Z
A X
B X
B Z
A Y
B Z
C X
B Z
A Z
C X
A Y
A Z
B Z
A Y
A X
B Z
B Y
B Z
B X
B Z
A X
B Z
A Z
B Z
B Z
B Y
A X
B Z
B X
B Y
B Y
A Y
A X
C Z
B Y
C Z
A X
B X
B Z
B X
C X
B Z
B Z
A X
A Y
A Z
A Z
B Z
B Z
A X
B Z
B Y
A X
A Y
B Z
B X
A Y
B Z
B Y
B X
B Z
A Z
B Y
A Y
A X
B Z
B Z
B Z
B Z
A X
B Y
B Z
B Z
B Z
A Z
B Y
A X
C Y
B Z
B Z
B Y
B X
B Z
A Y
A X
B Z
B Y
B Z
A Y
C X
B Y
B Z
B Z
A Y
B X
B Z
B Z
A X
B X
B Z
A Z
B Y
B Z
B Z
B Z
B Z
B Z
A Z
B X
A Y
C Y
B Z
A Y
B Z
B Z
A Y
B Z
B Z
A Y
A Y
B X
B Y
A X
B Z
A Y
B Z
A Z
B Z
B X
B Z
B Z
B Y
B Y
B Z
A X
B Y
B Z
B Z
B Z
B Y
A Y
B Z
B Y
B Z
B Z
B X
A X
B Y
A X
A X
B Z
A X
B Z
C X
B Y
B Z
B Z
B Y
A X
B Z
B Z
B Y
B X
B Z
B X
B Z
C Y
B Y
B Z
B Z
A Z
B Z
B Z
A Y
B Z
B Y
A X
B Z
B Z
B Z
B X
B Z
B Y
B Z
B X
C Z
B Y
B Z
B Z
B Y
A X
A X
B Y
A Y
B Z
B X
B Y
B Z
B Y
B Z
A X
C X
B Z
A Z
C Y
A X
B Y
B Y
A X
A X
B Y
B Z
C Y
B Z
B Y
A X
B Y
B Y
B Z
B X
B Z
C X
C Y
B X
A Y
B Z
B Z
B Z
A X
B Z
B Z
B X
B X
B X
B X
B Y
A Y
B Z
B Z
B Z
A Z
B X
B X
B X
B X
B Z
A Y
B Y
B Z
A X
A X
A X
B Y
B Z
B X
B Z
A Z
B Z
B Z
A Y
C Z
A X
B Z
C X
B Z
B Z
B Z
B Y
B Y
B Z
C X
B Z
A Y
B X
C X
A Y
C X
B Z
B X
A Z
B Z
C Y
B Y
B X
B Z
B Y
A Y
B X
A Z
B Z
B Z
C Z
B Z
B Y
B Z
A Y
C Y
B Z
B X
A Y
B Z
B Z
B Y
B Y
B Z
A X
A Y
A X
A Z
B Z
B Z
B Y
A Y
B Y
B Z
B Y
A Y
B X
A X
B Y
B Y
B X
B Z
B Y
C X
B Z
B Z
B Z
A X
B Z
B X
A Y
A Y
B Z
A Y
A Y
A Y
B Y
B Z
A X
C X
B Y
A X
C X
B Z
B Y
A Y
B X
B Z
B Y
B Y
B Z
B Z
A Y
B X
B X
A X
B Z
B X
B Z
B Z
C Z
C Y
A X
B X
C X
B X
A Z
A X
B Y
C X
B Y
A X
A X
A X
B X
B Z
B X
B Y
B Z
B Z
B Z
B Z
A X
A X
B X
B Z
A Z
A X
B Z
C Y
B Z
A X
B Z
A Z
B Z
B Z
A Y
B Y
B Z
B X
B Z
B Z
C Y
B Z
B X
A X
B Y
B Z
A Y
A X
B Z
B Y
B Z
B X
A Y
C Z
B X
B Z
A X
B X
B Z
B Z
A X
B Y
B X
B Z
B Z
B Y
B X
B X
C X
B Z
C X
B Z
C Y
A Y
C X
B X
B Y
B Z
B Y
B Z
A X
B Z
B Z
B Y
B Y
A X
A X
A Y
B Z
B Z
A Y
B Z
A X
B Z
B X
B X
B X
A Y
B Z
B Z
A Y
B Z
A Z
B Y
B X
A Z
A Z
B Z
A Y
B Z
B Y
B Y
B X
A Y
B X
B Z
B Z
B Y
B X
B Z
B Z
B Z
B Z
A X
B X
B X
B Z
A X
B X
B Z
B Z
B Y
A Y
B Z
B Y
B Y
A X
B X
B Y
C X
C X
B Y
A Y
A Z
B X
B Z
B Z
B Z
B Z
A X
A Y
A Y
B Y
C X
B Z
A Y
B X
C Z
B X
B Y
A Y
B X
B Y
B Z
B Y
B X
B Y
A Z
B Z
A X
B X
B X
B Z
B Y
B Y
B Y
A X
B X
B Y
B Z
A Y
A X
B X
B Z
B Z
C X
A Z
B Z
A X
A Y
C X
B Z
B Z
A X
B X
A Y
A Y
B Z
B Z
B X
A Z
B Z
B Y
A Y
B Z
B Y
A Y
B Y
B Z
A X
B Y
A X
A Y
A X
A X
B Y
A Z
B Z
A Y
B Z
A Z
A Y
B Z
B Y
B Z
B X
"""
defmodule Runner do
def run(strategy) do
round_score(strategy) + shape_score(strategy)
end
# def round_score(strategy) do
# case strategy do
# strategy when strategy in [{"A", "Z"}, {"B", "X"}, {"C", "Y"}] -> 0 # 25, 22
# strategy when strategy in [{"A", "X"}, {"B", "Y"}, {"C", "Z"}] -> 3 # 23
# strategy when strategy in [{"A", "Y"}, {"B", "Z"}, {"C", "X"}] -> 6 # 21, 24
# end
# end
def round_score({op, sf}) do
# case to_ascii(sf) - to_ascii(op) do
# 23 -> 3
# result when result in [25, 22] -> 0
# result when result in [21, 24] -> 6
# end
case (to_ascii(sf) - to_ascii(op)) |> rem(3) do
0 -> 6
1 -> 0
2 -> 3
end
end
# def shape_score({_, "X"}), do: 1
# def shape_score({_, "Y"}), do: 2
# def shape_score({_, "Z"}), do: 3
def shape_score({_, letter}) do
to_ascii(letter) - 87
end
def to_ascii(letter) do
letter
|> String.to_charlist()
|> hd
end
end
input
|> String.split("\n", trim: true)
|> Enum.map(&String.split(&1, " "))
|> Enum.map(&List.to_tuple/1)
|> Enum.map(&Runner.run(&1))
|> Enum.sum()
"X"
|> String.to_charlist()
|> hd
defmodule Runner2 do
def run(strategy) do
round_score(strategy) + shape_score(strategy)
end
def round_score({_, "X"}), do: 0
def round_score({_, "Y"}), do: 3
def round_score({_, "Z"}), do: 6
def shape_score(strategy) do
case strategy do
strategy when strategy in [{"A", "Y"}, {"B", "X"}, {"C", "Z"}] -> 1
strategy when strategy in [{"A", "Z"}, {"B", "Y"}, {"C", "X"}] -> 2
strategy when strategy in [{"A", "X"}, {"B", "Z"}, {"C", "Y"}] -> 3
end
end
end
input
|> String.split("\n", trim: true)
|> Enum.map(&String.split(&1, " "))
|> Enum.map(&List.to_tuple/1)
|> Enum.map(&Runner2.run(&1))
|> Enum.sum()