26 lines
634 B
Elixir
26 lines
634 B
Elixir
import AOC
|
|
|
|
aoc 2015, 1 do
|
|
def input_chars(), do: input_string() |> String.split("", trim: true)
|
|
|
|
def p1 do
|
|
input_chars()
|
|
|> Enum.reduce(0, fn
|
|
"(", floor -> floor + 1
|
|
")", floor -> floor - 1
|
|
end)
|
|
end
|
|
|
|
def p2 do
|
|
input_string()
|
|
|> find_step_entering_basement(0, 0)
|
|
end
|
|
|
|
defp find_step_entering_basement(")" <> _, 0, step), do: step + 1
|
|
|
|
defp find_step_entering_basement("(" <> rest, floor, step),
|
|
do: find_step_entering_basement(rest, floor + 1, step + 1)
|
|
|
|
defp find_step_entering_basement(")" <> rest, floor, step),
|
|
do: find_step_entering_basement(rest, floor - 1, step + 1)
|
|
end
|