Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- defmodule S do
- def test do
- a = [[1, 3], [2, 6], [8, 10], [7, 11]]
- [[1,6], [7,11]] = interval(a)
- a = [[5,12],[8,10]]
- [[5,12]] = interval(a)
- a = [[1,6], [6,10]]
- ^a = interval(a)
- :ok
- end
- def interval(xs) do
- [[a,b]|xs] = Enum.sort(xs, fn([a, _], [b, _]) -> a <= b end)
- merge(xs, a, b, [])
- end
- def merge([], a1, b1, ret), do: [[a1,b1]|ret] |> Enum.reverse
- def merge([[a,b]|xs], a1, b1, ret) do
- case a < b1 do
- true -> merge(xs, a1, max(b1, b), ret)
- false -> merge(xs, a, b, [[a1,b1]|ret])
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement