Powered by AppSignal & Oban Pro

Advent of Code 2015 - Day 1

2015/day01.livemd

Advent of Code 2015 - Day 1

Setup

Mix.install([
  {:kino, "~> 0.4.1"}
])
:ok
input = Kino.Input.textarea("Please enter the input:")

Part 1

input
|> Kino.Input.read()
|> String.to_charlist()
|> Enum.reduce(0, fn
  ?(, floor -> floor + 1
  ?), floor -> floor - 1
end)
138

Part 2

input
|> Kino.Input.read()
|> String.to_charlist()
|> Enum.reduce_while({0, 0}, fn
  _, {-1, n} -> {:halt, n}
  ?(, {floor, n} -> {:cont, {floor + 1, n + 1}}
  ?), {floor, n} -> {:cont, {floor - 1, n + 1}}
end)
1771