Ludic numbers: Difference between revisions

Content added Content deleted
(→‎{{header|Elixir}}: used Enum.drop_every)
Line 1,000: Line 1,000:


=={{header|Elixir}}==
=={{header|Elixir}}==
{{works with|Elixir|1.3.1}}
<lang elixir>defmodule Ludic do
<lang elixir>defmodule Ludic do
def numbers(n \\ 100000) do
def numbers(n \\ 100000) do
Line 1,008: Line 1,009:
defp numbers(list, nums) when length(list) < hd(list), do: Enum.reverse(nums, list)
defp numbers(list, nums) when length(list) < hd(list), do: Enum.reverse(nums, list)
defp numbers([h|_]=list, nums) do
defp numbers([h|_]=list, nums) do
Enum.with_index(list)
Enum.drop_every(list, h) |> numbers([h | nums])
|> Enum.filter_map(fn{_,i} -> rem(i,h)!=0 end, fn{n,_} -> n end)
|> numbers([h | nums])
end
end
Line 1,017: Line 1,016:
IO.puts "Below 1000: #{length(numbers(1000))}"
IO.puts "Below 1000: #{length(numbers(1000))}"
tuple = numbers(25000) |> List.to_tuple
tuple = numbers(25000) |> List.to_tuple
IO.puts "2000..2005th: #{ inspect Enum.map(1999..2004, fn i -> elem(tuple, i) end) }"
IO.puts "2000..2005th: #{ inspect for i <- 1999..2004, do: elem(tuple, i) }"
ludic = numbers(250)
ludic = numbers(250)
triple = for x<-ludic, x+2 in ludic, x+6 in ludic, do: [x, x+2, x+6]
triple = for x <- ludic, x+2 in ludic, x+6 in ludic, do: [x, x+2, x+6]
IO.puts "Triples below 250: #{inspect triple, char_lists: :as_lists}"
IO.puts "Triples below 250: #{inspect triple, char_lists: :as_lists}"
end
end