RosettaCodeData/Task/Look-and-say-sequence/Elixir/look-and-say-sequence-1.elixir
2015-11-18 06:14:39 +00:00

23 lines
485 B
Text

defmodule LookAndSay do
def next(n) do
Enum.chunk_by(to_char_list(n), &(&1))
|> Enum.map(fn cl=[h|_] -> Enum.concat(to_char_list(length cl), [h]) end)
|> Enum.concat
|> List.to_integer
end
def sequence_from(n) do
Stream.iterate n, &(next/1)
end
def main([start_str|_]) do
{start_val,_} = Integer.parse(start_str)
IO.inspect sequence_from(start_val) |> Enum.take 9
end
def main([]) do
main(["1"])
end
end
LookAndSay.main(System.argv)