Ludic numbers: Difference between revisions

Added Elixir
No edit summary
(Added Elixir)
Line 408:
(233 235 239)
</pre>
 
=={{header|Clojure}}==
<lang clojure>(defn ints-from [n]
Line 615 ⟶ 616:
}</lang>
The result is the same.
 
=={{header|Eiffel}}==
<lang Eiffel>
Line 765 ⟶ 767:
Number of Ludic numbers smaller than 1000.
142
</pre>
 
=={{header|Elixir}}==
<lang elixir>defmodule Ludic do
def numbers, do: numbers(100000)
def numbers(n) when is_integer(n) do
[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)
defp numbers(list, nums) do
h = hd(list)
ludic = Enum.with_index(list) |>
Enum.filter_map(fn{_,i} -> rem(i,h)!=0 end, fn{n,_} -> n end)
numbers(ludic, [h | nums])
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
IO.puts "2000..2005th: #{ inspect Enum.map(1999..2004, fn i -> elem(tuple, i) end) }"
ludic = numbers(250)
triple = for x<-ludic, Enum.member?(ludic, x+2), Enum.member?(ludic, x+6), do: [x, x+2, x+6]
IO.puts "Triples below 250: #{inspect triple, char_lists: :as_lists}"
end
end
 
Ludic.task</lang>
 
{{out}}
<pre>
First 25 : [1, 2, 3, 5, 7, 11, 13, 17, 23, 25, 29, 37, 41, 43, 47, 53, 61, 67, 71, 77, 83, 89, 91, 97, 107]
Below 1000: 142
2000..2005th: [21475, 21481, 21487, 21493, 21503, 21511]
Triples below 250: [[1, 3, 7], [5, 7, 11], [11, 13, 17], [23, 25, 29], [41, 43, 47], [173, 175, 179], [221, 223, 227], [233, 235, 239]]
</pre>
 
Anonymous user