RosettaCodeData/Task/Ludic-numbers/Elixir/ludic-numbers.elixir

24 lines
740 B
Text
Raw Permalink Normal View History

2015-11-18 06:14:39 +00:00
defmodule Ludic do
2016-12-05 22:15:40 +01:00
def numbers(n \\ 100000) do
2015-11-18 06:14:39 +00:00
[h|t] = Enum.to_list(1..n)
numbers(t, [h])
end
defp numbers(list, nums) when length(list) < hd(list), do: Enum.reverse(nums, list)
2016-12-05 22:15:40 +01:00
defp numbers([h|_]=list, nums) do
Enum.drop_every(list, h) |> numbers([h | nums])
2015-11-18 06:14:39 +00:00
end
def task do
IO.puts "First 25 : #{inspect numbers(200) |> Enum.take(25)}"
IO.puts "Below 1000: #{length(numbers(1000))}"
tuple = numbers(25000) |> List.to_tuple
2016-12-05 22:15:40 +01:00
IO.puts "2000..2005th: #{ inspect for i <- 1999..2004, do: elem(tuple, i) }"
2015-11-18 06:14:39 +00:00
ludic = numbers(250)
2016-12-05 22:15:40 +01:00
triple = for x <- ludic, x+2 in ludic, x+6 in ludic, do: [x, x+2, x+6]
2015-11-18 06:14:39 +00:00
IO.puts "Triples below 250: #{inspect triple, char_lists: :as_lists}"
end
end
Ludic.task