Day 1
Common
defmodule Day1 do
def parse_input(raw_input) do
raw_input
|> String.split("\n\n", trim: true)
|> Enum.map(fn group ->
group
|> String.split("\n", trim: true)
|> Enum.map(&String.to_integer/1)
end)
end
end
Input
Mix.install([{:kino, github: "livebook-dev/kino"}])
textarea = Kino.Input.textarea("Input:")
raw_input = Kino.Input.read(textarea)
input = Day1.parse_input(raw_input)
Part 1
defmodule Day1.Part1 do
def run(input) do
input
|> Enum.map(&Enum.sum/1)
|> Enum.max()
end
end
Day1.Part1.run(input)
Part 2
defmodule Day1.Part2 do
def run(input) do
input
|> Enum.map(&Enum.sum/1)
|> Enum.sort(:desc)
|> Enum.take(3)
|> Enum.sum()
end
end
Day1.Part2.run(input)