Advent of Code 2022
Mix.install([
{:req, "~> 0.3.2"}
])
Day 2
input =
"https://adventofcode.com/2022/day/2/input"
|> Req.get!(headers: [cookie: "session=#{System.get_env("AOC_COOKIE")}"])
|> Map.get(:body)
Part 1
A=rock, B=paper, C=scissors X=rock, Y=paper, Z=scissors
input
|> String.split("\n", trim: true)
|> Enum.map(&String.split/1)
|> Enum.map(fn
["A", "X"] -> {:rock, :draw}
["A", "Y"] -> {:paper, :win}
["A", "Z"] -> {:scissors, :lose}
["B", "X"] -> {:rock, :lose}
["B", "Y"] -> {:paper, :draw}
["B", "Z"] -> {:scissors, :win}
["C", "X"] -> {:rock, :win}
["C", "Y"] -> {:paper, :lose}
["C", "Z"] -> {:scissors, :draw}
end)
|> Enum.map(fn {chosen, outcome} ->
p1 =
case chosen do
:rock -> 1
:paper -> 2
:scissors -> 3
end
p2 =
case outcome do
:win -> 6
:lose -> 0
:draw -> 3
end
p1 + p2
end)
|> Enum.sum()
Part 2
input
|> String.split("\n", trim: true)
|> Enum.map(&String.split/1)
|> Enum.map(fn
["A", "X"] -> {:scissors, :lose}
["A", "Y"] -> {:rock, :draw}
["A", "Z"] -> {:paper, :win}
["B", "X"] -> {:rock, :lose}
["B", "Y"] -> {:paper, :draw}
["B", "Z"] -> {:scissors, :win}
["C", "X"] -> {:paper, :lose}
["C", "Y"] -> {:scissors, :draw}
["C", "Z"] -> {:rock, :win}
end)
|> Enum.map(fn {chosen, outcome} ->
p1 =
case chosen do
:rock -> 1
:paper -> 2
:scissors -> 3
end
p2 =
case outcome do
:win -> 6
:lose -> 0
:draw -> 3
end
p1 + p2
end)
|> Enum.sum()