Powered by AppSignal & Oban Pro

AdventOfCode 2015 - Day 1

2015/day1.livemd

AdventOfCode 2015 - Day 1

Part 1

input = IO.gets("input: ") |> String.trim()

input
|> String.graphemes()
|> Enum.reduce(0, fn
  "(", i -> i + 1
  ")", i -> i - 1
end)

Part 2

input = IO.gets("input: ") |> String.trim()

input
|> String.graphemes()
|> Enum.with_index(1)
|> Enum.reduce_while(0, fn
  {")", i}, 0 ->
    # ground floor, going down.  
    {:halt, i}

  {")", _}, floor ->
    {:cont, floor - 1}

  {"(", _}, floor ->
    {:cont, floor + 1}
end)