Elixir Triangle
defmodule Triangle do
def triangle(a) when length(a) < 3, do: 0
def triangle(a) do
sorted = Enum.sort(a)
c = length(sorted)
found =
Enum.any?(0..(c - 3), fn i ->
v = Enum.at(sorted, i)
v > 0 and v > Enum.at(sorted, i + 2) - Enum.at(sorted, i + 1)
end)
if found, do: 1, else: 0
end
end
This sorts the values and checks nearby triples, because a valid triangle only needs one local match after sorting.