Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,19 @@
|
|||
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)
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
defmodule Sailor do
|
||||
def coconuts(sailor), do: coconuts(sailor, sailor)
|
||||
defp coconuts(sailor, nuts) do
|
||||
if n = do_coconuts(sailor, nuts, sailor), do: n, else: coconuts(sailor, nuts+sailor)
|
||||
end
|
||||
|
||||
defp do_coconuts(_sailor, nuts, 0), do: nuts
|
||||
defp do_coconuts(sailor, nuts, _) when rem(nuts, sailor-1) != 0, do: nil
|
||||
defp do_coconuts(sailor, nuts, i) do
|
||||
do_coconuts(sailor, nuts + div(nuts, sailor-1) + 1, i-1)
|
||||
end
|
||||
end
|
||||
|
||||
Enum.each(2..9, fn sailor ->
|
||||
IO.puts "#{sailor}: #{Sailor.coconuts(sailor)}"
|
||||
end)
|
||||
Loading…
Add table
Add a link
Reference in a new issue