19 lines
627 B
Text
19 lines
627 B
Text
defmodule RC do
|
|
def valid?(sailor, nuts), do: valid?(sailor, nuts, sailor)
|
|
|
|
def valid?(sailor, nuts, 0), do: nuts > 0 and rem(nuts,sailor) == 0
|
|
def valid?(sailor, nuts, _) when rem(nuts,sailor)!=1, do: false
|
|
def valid?(sailor, nuts, i) do
|
|
valid?(sailor, nuts - div(nuts,sailor) - 1, i-1)
|
|
end
|
|
end
|
|
|
|
Enum.each([5,6], fn sailor ->
|
|
nuts = Enum.find(Stream.iterate(sailor, &(&1+1)), fn n -> RC.valid?(sailor, n) end)
|
|
IO.puts "\n#{sailor} sailors => #{nuts} coconuts"
|
|
Enum.reduce(0..sailor, nuts, fn _,n ->
|
|
{d, r} = {div(n,sailor), rem(n,sailor)}
|
|
IO.puts " #{inspect [n, d, r]}"
|
|
n - 1 - d
|
|
end)
|
|
end)
|