Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
27
Task/Happy-numbers/Elixir/happy-numbers.elixir
Normal file
27
Task/Happy-numbers/Elixir/happy-numbers.elixir
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
defmodule Happy do
|
||||
def task(num) do
|
||||
Process.put({:happy, 1}, true)
|
||||
Stream.iterate(1, &(&1+1))
|
||||
|> Stream.filter(fn n -> happy?(n) end)
|
||||
|> Enum.take(num)
|
||||
end
|
||||
|
||||
defp happy?(n) do
|
||||
sum = square_sum(n, 0)
|
||||
val = Process.get({:happy, sum})
|
||||
if val == nil do
|
||||
Process.put({:happy, sum}, false)
|
||||
val = happy?(sum)
|
||||
Process.put({:happy, sum}, val)
|
||||
end
|
||||
val
|
||||
end
|
||||
|
||||
defp square_sum(0, sum), do: sum
|
||||
defp square_sum(n, sum) do
|
||||
r = rem(n, 10)
|
||||
square_sum(div(n, 10), sum + r*r)
|
||||
end
|
||||
end
|
||||
|
||||
IO.inspect Happy.task(8)
|
||||
Loading…
Add table
Add a link
Reference in a new issue