RosettaCodeData/Task/Van-der-Corput-sequence/Elixir/van-der-corput-sequence.elixir

20 lines
561 B
Plaintext

defmodule Van_der_corput do
def sequence( n ), do: sequence( n, 2 )
def sequence( 0, _base ), do: 0.0
def sequence( n, base ) do
List.to_float( '0.' ++ ( for x <- sequence_loop(n, base), do: Integer.to_char_list(x) ) |> List.flatten )
end
def sequence_loop( 0, _base ), do: []
def sequence_loop( n, base ) do
new_n = div(n, base)
digit = rem(n, base)
[digit | sequence_loop( new_n, base )]
end
end
Enum.each(2..5, fn base ->
IO.puts "Base #{base}: #{inspect Enum.map(0..9, fn x -> Van_der_corput.sequence(x, base) end)}"
end)