Day 1
Common
defmodule Day1 do
def parse_input(raw_input) do
raw_input
|> String.split()
|> Enum.map(&String.to_integer(String.trim(&1)))
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
Enum.zip_reduce(input, Enum.drop(input, 1), 0, fn
a, b, increments_count when a < b ->
increments_count + 1
_, _, increments_count ->
increments_count
end)
end
end
Day1.Part1.run(input)
Part 2
defmodule Day1.Part2 do
def run(input) do
Enum.zip_reduce(input, Enum.drop(input, 3), 0, fn
a, b, increments_count when a < b ->
increments_count + 1
_, _, increments_count ->
increments_count
end)
end
end
Day1.Part2.run(input)