Powered by AppSignal & Oban Pro

Day 02

2022/day02.livemd

Day 02

Section

defmodule Day02 do
  def part1(input_path) do
    input_path
    |> File.stream!()
    |> Stream.map(&String.trim/1)
    |> Stream.map(&score1/1)
    |> Enum.sum()
  end

  def part2(input_path) do
    input_path
    |> File.stream!()
    |> Stream.map(&String.trim/1)
    |> Stream.map(&score2/1)
    |> Enum.sum()
  end

  # A = Rock = 1
  # B = Paper = 2
  # C = Scissors = 3
  # X = Rock = 1
  # Y = Paper = 2
  # Z = Scissors = 3
  defp score1("B X"), do: 1
  defp score1("C Y"), do: 2
  defp score1("A Z"), do: 3
  defp score1("A X"), do: 4
  defp score1("B Y"), do: 5
  defp score1("C Z"), do: 6
  defp score1("C X"), do: 7
  defp score1("A Y"), do: 8
  defp score1("B Z"), do: 9

  # A = Rock = 1
  # B = Paper = 2
  # C = Scissors = 3
  # X = Lose = 0
  # Y = Draw = 3
  # Z = Win = 6
  defp score2("B X"), do: 1
  defp score2("C X"), do: 2
  defp score2("A X"), do: 3
  defp score2("A Y"), do: 4
  defp score2("B Y"), do: 5
  defp score2("C Y"), do: 6
  defp score2("C Z"), do: 7
  defp score2("A Z"), do: 8
  defp score2("B Z"), do: 9
end
input_file = "#{__DIR__}/day02.txt"
Day02.part1(input_file)
Day02.part2(input_file)