Elixir Array Maximal Adjacement Difference
defmodule ArrayMaximalAdjacentDifference do
def array_maximal_adjacent_difference(a) when length(a) < 3, do: 0
def array_maximal_adjacent_difference(a) do
len = length(a)
1..(len - 2)
|> Enum.map(fn i ->
prev = Enum.at(a, i - 1)
cur = Enum.at(a, i)
nxt = Enum.at(a, i + 1)
max(abs(cur - prev), abs(cur - nxt))
end)
|> Enum.max()
end
end
This checks the gap between each pair of neighbors and returns the largest difference.