21 lines
528 B
Elixir
21 lines
528 B
Elixir
defmodule LeftFactorial do
|
|
def calc(0), do: 0
|
|
def calc(n) do
|
|
{result, _factorial} = Enum.reduce(1..n, {0, 1}, fn i,{res, fact} ->
|
|
{res + fact, fact * i}
|
|
end)
|
|
result
|
|
end
|
|
end
|
|
|
|
Enum.each(0..10, fn i ->
|
|
IO.puts "!#{i} = #{LeftFactorial.calc(i)}"
|
|
end)
|
|
Enum.each(Enum.take_every(20..110, 10), fn i ->
|
|
IO.puts "!#{i} = #{LeftFactorial.calc(i)}"
|
|
end)
|
|
Enum.each(Enum.take_every(1000..10000, 1000), fn i ->
|
|
digits = LeftFactorial.calc(i) |> to_char_list |> length
|
|
IO.puts "!#{i} has #{digits} digits"
|
|
end)
|