Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Day 2

2022/day_2.livemd

Day 2

Input

example_input = """
A Y
B X
C Z
"""
input = """
B Z
B Z
C Z
C Z
B X
C Y
A Y
B Z
A Z
A Y
C Z
C X
C Z
C X
B X
B Z
B Z
A Z
C Z
C Z
C Y
C Z
B Z
B Z
A X
A Y
B Z
B Z
C Z
B Z
B Z
C X
C Z
A Y
A X
A X
C Z
C Z
B X
C X
B Z
A Z
B X
B Z
B Z
A Z
B Z
A Y
C Z
C Z
B X
C Z
A Z
C Z
C Z
C Z
C Z
A Z
B Z
C Z
A Z
C Z
C Z
C Y
A Y
C X
C Z
C Z
C Z
C Z
A Y
C X
A Y
A Y
C X
B Z
A Y
C Y
C Z
B Z
C Z
B Z
B Z
B Z
C Y
B Z
A Y
C Z
C Z
A X
C X
C Z
A X
C Z
C Z
C X
A Z
C Z
C Z
B Z
C Y
A Y
C Y
C Y
A Z
B Z
C Z
C Z
C Z
A Z
C Z
B X
C Z
A Y
C Z
C X
C Y
C Y
B Z
C Z
C Z
A X
C X
C Z
C Z
A Z
B Z
B Z
C X
C Z
B Z
C X
B Z
C Z
B Z
B Z
B Z
B Z
C Y
C Z
B Z
C Z
C Z
C Z
C Z
B Z
C Z
B Z
C Z
B Z
C Z
C Y
C Z
C Z
C X
C Z
C Z
C Y
C Z
C Y
C X
B Z
B Z
C Z
A Z
C Z
C Z
C Z
B Z
C Z
B Z
C Z
B Z
C Z
C Z
B X
B Z
C Z
C Z
A Z
A Z
B Z
C Z
C Z
A Z
B X
C X
A Z
C Z
C Z
B Y
B Z
B Z
A Y
B Z
C Z
C Z
A Y
B Z
C Y
A Z
C X
A Z
A Y
C X
C Y
C Z
B Z
C Z
A Y
B Z
B Z
C Z
C Z
C Z
C Z
C Z
B Z
C Z
A X
C Z
C Z
A Y
C Z
A Y
C Z
B Z
C Z
A Y
C Z
C Y
C Z
B Z
C X
A Y
C X
A Y
B X
C Y
B X
C Z
C Y
C Z
C Y
C Y
B Z
C Z
A Y
C X
C Z
C Z
B Z
A Z
C Z
C Z
C Y
C Z
C Y
B X
C Z
C Z
C Z
C X
A Y
B Z
C Z
C Z
C Z
B Z
A Y
A Z
A Y
B Z
A Z
A Y
B Z
C Z
A Y
A Z
B Z
B Z
B Z
C Z
C Z
C Z
C Z
C Z
C Z
B Z
C Z
C Z
C Z
A Z
A Y
C X
C Z
A Z
C Z
A Y
C Z
A Y
C Z
C Z
A X
C Y
C Z
A X
C X
A X
B Z
C Z
A X
C Z
B Z
A X
C Z
A Y
A Z
C Y
A Y
C Y
A Z
B Z
A Z
B Z
C X
C X
C Z
C Z
B Z
A Y
C Z
A Y
C Z
B Z
B X
B X
B X
A Z
B Z
C X
C Z
A Y
C Z
B X
A Y
C X
B Z
C Z
C Z
C Z
C Z
A Z
B Z
B Z
B X
A Y
C Z
C X
A Y
C Z
C Z
C Z
A Y
A X
B Z
C Z
A Z
C Y
A Z
B Z
A Y
C Z
C Z
B Z
A Y
B Z
A Z
A Y
C Z
A X
C Z
C Z
B Z
C Z
C X
A Y
A Y
B Z
C Z
B X
A Y
C Z
C Z
A X
A Z
C Z
C Z
A Y
C Z
C Y
A Y
A Y
B Z
C Z
C Z
C X
C Z
A Y
B Z
C Z
C Z
A Y
B Z
C Z
C Z
B Z
A Y
B Z
C Z
C Z
C Z
C X
C Z
C Z
C Z
C Y
C X
C Y
C Z
B Z
A Y
C X
B Z
C X
C X
C Z
A Z
C Z
B X
A Y
C Z
B Z
A X
B X
C X
C Z
C Z
B Z
B Z
C Z
C Z
A Y
B Z
A Z
B Z
A Z
A X
C Z
A Z
A Z
B X
A Z
B Z
B Z
A Y
C Y
B Z
B Z
B Z
B Z
C Z
B Z
C Z
B Z
C Y
C Z
C Z
C X
C Z
C Y
C Y
C X
A Y
C Y
B Z
C Z
A Y
A Z
B X
C Z
C Z
A Y
A Y
A Y
C Z
A Z
C Z
B Y
A X
A Y
C Z
A X
B Z
C Z
C Z
B Z
C Z
A Z
C X
C Z
B Z
B Z
C Z
B Z
A Z
C Z
C Z
A Y
B Z
A Y
B Z
C Z
B Z
C Z
B Z
B Z
A Y
C Y
B Z
C Z
A Z
B Z
C Z
C Z
A Z
B Z
C Z
A Y
A Z
C X
B Z
A Y
A Y
C Z
A Z
B Z
B Z
C Z
C Z
C Z
C Z
A Y
A X
C Z
B Z
C Z
C Z
C Y
C Z
A X
A Z
C Z
B X
A Z
B X
B X
A Y
A Y
A Y
C Z
C Z
C Z
A Z
C X
A Y
C Z
B Z
C Z
A X
B Z
A X
A Z
C Z
C Z
C Z
B X
B Z
C X
B Z
C Z
C Z
C Z
A Y
B Z
B Z
C Z
A X
B Z
A Y
C Z
A Y
A Y
C Z
C Z
A Y
C X
C Z
A Y
C Z
B Z
B Z
C Z
C Y
B Z
B Z
C Z
A Y
C Z
B Z
B X
A Y
A Z
C Z
B Z
C Z
C X
A Y
A Z
A Y
B Z
A Z
B Z
A Y
A Y
B Z
C Z
C Z
C Z
A Y
A X
B Z
A Y
C Z
B X
C Z
C Z
A Y
C Z
C Z
C Y
C Z
C Y
B Z
B Z
C Z
C Z
B Z
B Z
B Z
C Z
B Z
B Z
C Z
C Z
C X
C Z
C Z
B Z
B Z
C X
A Y
C Y
C X
B Z
C X
B Z
C Z
A Z
C Y
C Z
C X
B X
A Y
C Y
A X
C Z
C Z
C Z
C Z
A Y
C Y
C Z
A Y
C Z
C Z
B Z
B Z
B Z
C Z
C Z
C Z
C Z
C Z
C Z
B Z
C Z
B Z
C Z
B Z
C Z
C Z
B Z
C Z
C Z
C Z
A Y
C Z
C Z
A X
C Z
C Z
A X
B Z
C Z
A Y
C X
C Z
A Z
C Y
A Y
C Z
B Z
C Z
B Z
C X
C Y
B Z
C Z
C Z
A Y
C X
C Z
C Z
B X
C Z
C Z
C Z
C Z
A Z
A Y
C Z
B Z
C Z
B Z
A Y
B Z
C Z
B Z
B Y
C Z
B Z
A Y
C Z
C Y
C Z
A X
B Z
C Z
A Z
A Z
B Z
A X
B Z
B Z
C Y
C Z
C Z
B Y
B Z
C Z
A Y
B X
B Z
C Z
C Z
C Z
B X
A Y
A Y
B Z
B Z
C Z
B Z
C Z
C Y
B Z
B Z
B X
A Y
A Y
A Y
B X
C Z
C Z
B Z
C Z
C X
B Z
C Z
C Z
B Z
C Z
C Z
A Y
B Z
A Y
C Y
B Z
B Z
B Z
C X
C Z
C Z
C Z
C X
C Z
A X
B Z
C Z
C Z
A Y
B Z
C Z
A Y
C Z
B Z
C Z
C Z
B Z
B Z
C Z
C Z
C Y
C Z
C Y
C X
C Z
C Y
C Z
A Y
B Z
B Z
A Y
B Z
B X
B X
A Z
C Y
C Z
C Z
B Z
C Z
C Z
C Z
C Z
C Y
C Z
B Z
C Z
C Z
C Z
B Z
B Z
C Z
B X
C Y
A X
C Z
A Z
C Y
C Z
C Z
B Z
C Z
C Z
C Z
B Z
A Y
A Z
B X
C X
A Y
A Y
C Z
C Z
C Z
C Z
C Z
C Z
C Y
C Z
C Z
C Z
A Y
A Z
C Z
A Y
C Z
C Z
B Z
B Z
B X
A Y
B Z
C Y
C Z
B Z
A Z
A Y
A X
C Z
B Z
C Z
B Z
B Z
C Z
C Z
C Z
C Z
A Y
A Z
C Z
C Z
A Y
C Y
C Z
A X
B X
B X
C Z
C Z
B Z
A Y
A Y
A Y
A X
C Z
B Z
B Z
B Z
A Y
C Y
B Z
A Z
C Z
B X
C Z
C Z
C X
C X
C Z
A Y
B Z
C Z
A Y
C Z
A X
C Z
B Z
B Z
B Z
C Z
B Z
C Z
A Z
C Z
B Z
C Z
A Y
C Z
A Z
C Z
C Y
B Z
A Z
C Z
B Y
A Z
C Z
A X
C Z
B Z
A X
C Z
B Z
C Z
C X
A Y
C Z
B Z
A X
C Z
B Z
C Z
A Y
C Z
C Z
C Z
B Z
C Y
C Z
C X
A Z
C Z
C Z
B Z
C Z
C Z
C Z
A Z
C Z
A Y
A X
C Z
A Y
C X
C Z
B Z
C Z
B Z
B Z
A Y
B Z
A Y
A Y
C X
B Z
C Z
C Z
C Z
C Z
C Z
A Y
B Z
C Z
A Y
B Z
C Z
C Z
A Y
B Z
C Z
C Y
B Z
C Z
B Z
A Z
C X
B Z
C Y
C Z
C Z
C X
C X
A X
C Z
B Z
A Z
C Z
B Z
B X
C Z
C Z
C Z
C Z
B Z
B X
C Z
C Z
C Z
B Z
C Y
B Z
B X
C Y
C Z
C Z
B Z
A Z
C Y
C X
C Z
B Z
C Z
C Z
C Z
B Z
B X
C Z
C Z
A Y
C Z
C Y
A Y
A Z
B Y
C Z
A Y
C X
C X
C X
C Z
B Z
C Z
C Z
B Z
C Z
A Y
C Z
C Z
B Z
C X
C Z
B Z
C Z
A Y
C Z
C Z
C X
C Z
B Z
C Y
C Z
A Z
C Z
B Z
A Z
B Z
C Z
A Y
B Z
C Z
C Z
B Z
A Z
C Z
C X
C Z
C Z
A Y
A Y
A Z
C Z
A Y
A X
C Z
C Z
C Z
C X
A Z
C Z
A Y
C Z
C Z
C Y
C Z
C Z
B Z
C Z
C Z
B Z
B Z
C Z
C Z
C Z
B Z
C Z
C Z
C Y
B Z
C Y
B Z
B X
C Z
C Z
A Y
B Z
C Y
B Z
B Z
B Z
B Z
C Z
C Y
A X
C Z
C Z
C Z
C Z
C Z
B Z
C Z
A Y
C Z
C Z
A Y
A Y
C Z
C Z
B Z
B Z
C X
C Z
C Z
A X
C Z
C Y
C Z
B Z
C Z
A Y
C Z
C Z
C Z
C X
A Y
C Z
C X
B Z
C Z
C Z
C Y
C Z
A Y
B Z
B Z
A X
C Y
C Z
B X
A X
C Z
C Z
C Z
C Z
C Y
A X
B Z
C Z
C Z
A Y
B X
A Z
A Y
B Z
C Z
C X
A X
C X
C Y
C Z
B X
A X
C Z
C Z
B X
A Y
A Y
A Y
C Z
C Z
A Y
C Z
A Z
A Y
C Z
B X
C Z
C Z
C X
C Z
C Z
A Z
B Z
A Z
C Y
C Y
C Y
C Z
C X
C Z
A Y
B Z
C Z
B Z
C Z
A Y
C X
C Z
C Z
B Z
C Z
C Y
A Y
B Z
B Z
B X
B Z
C Z
A Y
C Z
B Z
A Y
C Z
C Z
B Z
A Y
C Z
C Z
C Z
C Z
A Z
A Y
C Z
C X
A Z
A Z
C Z
C Z
C Z
A Y
B Z
B Z
B Z
B Z
C Z
C X
C Z
C Z
B Z
B Z
C Z
C X
A Z
A Y
C Z
B Z
C X
C X
A Y
A Y
C Z
B X
C Z
C Y
C X
A Y
C Y
C Z
C Z
B Z
A Z
C Z
C Z
C Z
C X
C Z
B Z
A Y
C Z
B Z
C Z
A Y
A Y
B X
B X
B Z
C Z
C Z
C Z
C Z
C X
C Z
B Z
C X
C X
A Z
B Y
C Z
C Z
C X
B Z
C Z
C Z
A Z
C Z
C X
A Y
A Z
C Z
B Z
C Z
B X
A Y
C Z
C Z
B Z
C X
B Z
B Z
C Z
C Z
C Z
B Z
A Z
C Z
A X
C Z
C Z
C Z
C X
C X
B Z
C Y
C Z
C Y
A Z
A Y
A X
B Z
A Y
C Z
C Y
B Z
B Z
B Z
B Y
B Z
A X
C Z
A Y
B Z
A Y
C Z
C Z
C Z
A Y
C Z
B Z
C Z
A Z
C Y
C X
A Y
A Y
A Y
B Z
C Y
C Z
C Z
C X
B Z
A Y
C Z
C Z
B Z
A Z
C Z
B Z
C X
C Z
B Z
C Z
C Z
B Y
B Z
C Y
B Z
A X
C Y
B Z
C Z
A Y
C Z
A Z
C Z
B Z
A X
C Y
C Y
A Y
A Z
B Z
A Z
C Z
C Y
C X
C Z
A Y
C Z
A Y
C Z
C Z
C Z
C Y
C X
C X
B Z
A Y
C Z
A X
C Z
A Z
C X
A X
A Z
A Y
C Z
C Z
C Z
B Z
B Z
C Z
C Z
C Z
A Y
C Z
A Z
C Z
C Z
C X
C X
C Z
C Z
C Z
C Z
C Z
A Y
B Z
B Z
C Z
B X
C Y
C Z
C Z
C Z
A Y
B X
C Z
C X
B Z
A Z
B X
C Z
C Z
B Z
C X
B Z
C Z
A Y
C X
A Y
A Z
C Y
C Z
C Y
C Z
C X
C Z
C Z
C Z
C Z
C Z
C Z
B Z
C Z
B Z
C X
C Z
C X
B Z
A Z
A X
C Z
A Y
C Y
C Z
C Z
C Z
B Z
B Z
A X
C Z
B Z
C Z
C Z
A X
C Z
B Z
C X
C Z
C Z
C Z
C Z
B X
C X
B Z
C Z
B Z
A Y
C Z
A Y
B X
C Z
C Z
C Z
C Z
A Y
C Z
C Z
B Z
C Z
C Z
B Z
A Y
C X
C Z
C Z
A Y
C X
B Z
B Z
A Y
C Z
B Z
C Z
A Y
B Z
A Z
C Z
B Z
C Z
B Z
C X
B Z
C Z
C Z
C Z
A Y
A Y
C Z
B Z
A Y
B X
C Z
B Z
C X
C Z
B Z
B Z
C Y
C Y
A Z
C X
C Z
B Z
A Y
C Z
C Z
B Z
A Y
B Z
A Z
C Z
B Z
B Z
B Z
C Z
C X
B Z
C Z
B Z
C Z
C Z
A Y
A Y
C Z
C X
A Y
B Z
C Z
A Z
C Z
B Z
A Y
C Z
C X
C Z
C Z
C Z
C Z
A Y
C Z
C X
B Z
B X
C Z
A Y
C Y
C Z
C Z
C X
C Z
C X
C X
C Z
B Z
B X
A Z
A Z
C Z
C Y
A Y
C Z
A Y
C Z
C Z
C Z
B Z
B Z
C Z
B Z
C Z
C Z
C Y
B Z
B Z
C Z
C Z
B Z
C X
A Z
C Z
C Z
A Y
A Y
A Y
C Z
C Z
B Z
A Z
A X
A Y
C X
C Z
B Z
C X
C X
B Z
B Z
B X
C Z
C Y
B Y
C Z
C Z
C Z
B Y
A Y
A Y
C Z
C Z
C Z
C Z
C Z
C Z
C Z
C Z
B X
A Z
A X
C Z
A Y
A Z
C X
C Z
C Y
C Z
C Z
C Z
B Z
B Z
A Y
A Z
C X
B X
B X
C Z
C Y
C Z
C Z
C Y
C Z
C Z
A Z
B Z
C Z
A Y
C Z
C Z
C Z
A Y
C Z
B Y
B X
C Z
A Y
B X
C Y
A Y
C Z
C Z
C Y
A Z
B Z
C Z
C Z
B Z
C Y
C X
C Y
C Y
B Z
C Z
B Z
C Z
A Y
A Y
A Y
B Z
C Z
A Z
C Z
C Y
B Z
B Z
C Y
C Z
C Z
A Y
C Z
C Z
B Z
C Z
C X
A X
A Y
A Y
B Z
C Z
B X
A Y
B Z
C Z
C Z
B Z
A Y
C Z
C Z
B X
A Y
C Z
B X
A Y
C Z
C X
A Z
B Z
B Z
C Z
C X
A Y
C Z
C Z
A Y
B Z
C Z
A Y
C Z
A Y
C Z
B Z
C Z
A X
B Z
C Z
C Z
C X
B Y
A Y
A X
C X
B Z
C Z
C X
B Z
C Z
C Z
C Z
C Z
A Z
C Z
A Y
B X
C Z
C Z
B Z
B Z
C X
B Z
B X
C Z
C Z
C Z
A Y
C Z
C Z
C Z
C Z
A Y
A Z
B Z
C Y
A Z
C Z
C Z
C Z
B X
B Z
C Z
B Z
C Z
C X
C Z
A X
C Z
C Z
C Z
C Z
C Z
A Y
A Y
B Z
B Z
B Z
B Z
C Z
C Z
C Z
C Z
A Z
A Y
C Z
A Z
A Y
C Z
C Z
C Y
A Y
B Z
C X
B Z
A Y
C Z
A Y
C Z
B Z
B Z
B Z
C Z
C Z
A Z
A Y
C X
A Y
C Z
A Y
C Z
C Z
A Y
B Z
C Z
C Y
C Z
B Z
B Z
B Z
C Y
C Z
B Z
C X
B Z
A Y
B Z
C Z
A Y
C Z
C Y
C Z
C Z
C Z
C Z
B X
B Z
C Z
C Z
A Y
C Y
C Z
C Z
C Z
C Z
C Z
C X
B Z
C X
A Y
B X
A Y
C Z
B Z
A Y
B Z
C Z
A Y
C Z
C Z
C X
C X
C Z
B Z
C X
C Z
A X
A Z
C Z
C Y
A Y
A X
B Z
C Z
C Z
B Z
A Y
C Z
A X
B Z
B Z
A X
C Y
C Z
A Y
B Z
C Z
C Z
C Z
B Z
C Z
B Z
C Z
B X
B Z
C Z
A X
C Z
A X
C Z
A Y
C Z
A Z
C Z
C Z
C Z
B X
A Y
A Y
A X
B Z
B Z
C Y
C Z
B Z
A X
C Z
A Y
C Z
C Z
B Z
C Z
C X
B X
B Z
B X
C Z
C Z
B Z
A Z
C Z
C Y
C Y
C Z
C Z
C Z
C Z
C Z
C Z
A X
A Z
C Z
B Z
B Z
B Z
C X
A Z
C Z
C Z
B Z
B Z
C Z
B X
C Z
B Z
C Z
C Z
C Z
C Z
A X
A Z
A Y
C Z
A Z
A Y
C Z
A Z
C Z
A Y
C Z
B Z
C Z
A Y
C Y
A Y
B Z
A Y
B Z
C Z
B X
C X
C Z
B Z
A Z
C Z
B X
C Y
C Z
C Y
A X
C X
C X
B Z
A Y
C Z
A Z
B Z
C Z
C X
C Z
C Z
C Z
C Z
C Z
B Z
B Z
C Z
C Z
C Z
C Z
C X
A Z
C Z
A Y
A Y
C Z
C Z
C Y
C Z
A Y
C Z
B Z
B X
A Z
A Y
A Y
C Z
A Y
C Z
A X
A Y
B X
C Z
C Z
A Z
C Z
A Y
B Z
A Y
C Z
C Z
B Z
C X
C Z
C Z
C Z
C Y
C Z
B X
C Z
C Z
B X
A Z
C Z
C X
C X
B Z
C Z
C Z
B Z
C Z
C Z
B Z
B Z
B Z
B Z
B Z
A Z
C X
C Y
C Z
A Y
C Z
B Z
A Y
C Z
C Z
B Z
B Z
C Z
A Z
A X
A Y
C Z
A Z
C Z
C X
B Z
C Z
A X
B Z
B X
C Z
C Z
C Z
B X
C Z
B Z
B Z
A Y
A Y
A Z
C Z
C Z
C Z
B Z
C Z
B Z
C Z
A Z
C Z
C X
C Z
C Z
C Z
B Z
A Y
C Y
C Z
C Z
C Z
C Z
B Z
C Y
C Z
A Z
C Y
C Z
B X
A Y
A Y
A X
B Z
B Z
C Z
A Y
B X
A Y
C X
C Z
A Y
C X
C Z
C Z
A Z
C X
C Z
C X
C Z
A Y
C Z
C Z
B Z
C Z
C Y
A Z
C X
C Y
C Z
C Z
C Y
B Z
B Z
C X
C Z
C Z
C Z
C Z
B Z
C Z
C Z
C Z
B Y
C Y
C Z
B Z
C Z
C Z
C Y
B Z
A Y
A Z
C Y
C Y
C Z
C X
C Z
A Z
C Z
C Z
A Y
A Z
C Z
A Z
C Z
B Z
B X
B Z
B Z
A Z
C Z
A Y
C Z
C Y
C Z
A Z
B Z
B Z
B Z
C Z
B Z
A Z
A Y
C Z
C Z
C Z
C Z
C Z
A Z
C Z
A Z
A X
B Z
A Y
C X
A Z
B X
B Y
A Y
B Z
A Z
B Z
B Z
C Z
A Z
B Z
B Z
A Y
C Y
C Y
A X
C Z
C Z
C Z
C X
C Z
C Z
C Z
C Z
B Z
A Y
C Z
C Z
C Z
A Z
C X
C Z
B Z
C Y
B X
B Y
C Z
C Z
A X
C Y
C X
B Z
B Z
C Z
B Z
C Y
C Y
C Y
C X
C Z
C Z
C Z
C X
A Y
C Z
C Z
B Z
A Z
C Z
A Y
B X
C Z
C X
C Z
A Z
B Z
A Y
C Z
C Z
C Z
A Z
C Z
C Z
C X
C Z
C Z
B Z
C Z
B Z
C X
C Z
A Y
A Y
C Z
C Z
B Z
C Z
C Z
C X
C Z
A Y
C Z
C Z
C Z
B Z
C Z
A Y
"""

Parse

defmodule ParserPart1 do
  def letter_to_pick("A"), do: :rock
  def letter_to_pick("B"), do: :paper
  def letter_to_pick("C"), do: :scissor
  def letter_to_pick("X"), do: :rock
  def letter_to_pick("Y"), do: :paper
  def letter_to_pick("Z"), do: :scissor
  def letter_to_pick(other), do: raise("Unkown play \"#{other}\"")

  def parse_line(line) do
    line
    |> String.split(" ")
    |> Enum.map(&letter_to_pick/1)
    |> List.to_tuple()
  end

  def parse(lines) do
    lines
    |> String.trim()
    |> String.split("\n")
    |> Enum.map(&parse_line/1)
  end
end
defmodule ParserPart2 do
  def letter_to_pick("A"), do: :rock
  def letter_to_pick("B"), do: :paper
  def letter_to_pick("C"), do: :scissor
  def letter_to_pick("X"), do: :lose
  def letter_to_pick("Y"), do: :tie
  def letter_to_pick("Z"), do: :win
  def letter_to_pick(other), do: raise("Unkown play \"#{other}\"")

  def parse_line(line) do
    line
    |> String.split(" ")
    |> Enum.map(&letter_to_pick/1)
    |> List.to_tuple()
  end

  def parse(lines) do
    lines
    |> String.trim()
    |> String.split("\n")
    |> Enum.map(&parse_line/1)
  end
end

Helpers

defmodule RockPaperScissors do
  def score(:rock, :rock), do: :tie
  def score(:rock, :paper), do: :win
  def score(:rock, :scissor), do: :lose

  def score(:paper, :rock), do: :lose
  def score(:paper, :paper), do: :tie
  def score(:paper, :scissor), do: :win

  def score(:scissor, :rock), do: :win
  def score(:scissor, :paper), do: :lose
  def score(:scissor, :scissor), do: :tie

  def score({opponent, self}), do: score(opponent, self)

  def self_value(:rock), do: 1
  def self_value(:paper), do: 2
  def self_value(:scissor), do: 3

  def outcome_value(:lose), do: 0
  def outcome_value(:tie), do: 3
  def outcome_value(:win), do: 6

  def play({opponent, self}) do
    outcome_value(score(opponent, self)) + self_value(self)
  end

  def desired(:rock, :tie), do: :rock
  def desired(:rock, :win), do: :paper
  def desired(:rock, :lose), do: :scissor

  def desired(:paper, :tie), do: :paper
  def desired(:paper, :win), do: :scissor
  def desired(:paper, :lose), do: :rock

  def desired(:scissor, :tie), do: :scissor
  def desired(:scissor, :win), do: :rock
  def desired(:scissor, :lose), do: :paper

  def play_to_desired({opponent, desired_outcome}) do
    to_play = desired(opponent, desired_outcome)
    outcome_value(score(opponent, to_play)) + self_value(to_play)
  end
end

Part 1

example_input
|> ParserPart1.parse()
|> Enum.map(&RockPaperScissors.play/1)
|> Enum.sum()
input
|> ParserPart1.parse()
|> Enum.map(&RockPaperScissors.play/1)
|> Enum.sum()

Part 2

example_input
|> ParserPart2.parse()
|> Enum.map(&RockPaperScissors.play_to_desired/1)
|> Enum.sum()
input
|> ParserPart2.parse()
|> Enum.map(&RockPaperScissors.play_to_desired/1)
|> Enum.sum()