add problem 25 solution
This commit is contained in:
parent
73a3e50ad5
commit
00acacb173
2 changed files with 30 additions and 0 deletions
|
@ -23,6 +23,27 @@ defmodule Euler.Algebra do
|
|||
Returns the sum of the digits of `n`.
|
||||
"""
|
||||
def digit_sum(n), do: digit_sum(n, 0)
|
||||
|
||||
def fib(0), do: 1
|
||||
def fib(1), do: 1
|
||||
def fib(n) do
|
||||
cache = Process.get(:fib, %{})
|
||||
case Map.get(cache, n, nil) do
|
||||
nil ->
|
||||
value = fib(n - 1) + fib(n - 2)
|
||||
cache = Process.get(:fib, %{}) |> Map.put_new(n, value)
|
||||
Process.put(:fib, cache)
|
||||
value
|
||||
m -> m
|
||||
end
|
||||
end
|
||||
|
||||
def num_digits(0, acc), do: acc
|
||||
def num_digits(n, acc), do: num_digits(div(n,10),acc+1)
|
||||
def num_digits(0), do: 1
|
||||
def num_digits(n) do
|
||||
num_digits(n, 0)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
|
9
solutions/25/solution.exs
Normal file
9
solutions/25/solution.exs
Normal file
|
@ -0,0 +1,9 @@
|
|||
import Euler.Algebra, only: [fib: 1, num_digits: 1]
|
||||
|
||||
Stream.iterate(1, &(&1 + 1))
|
||||
|> Stream.map(&{&1, fib(&1)})
|
||||
|> Stream.filter(&num_digits(elem(&1, 1)) >= 1000)
|
||||
|> Enum.take(1)
|
||||
|> Enum.map(&elem(&1, 0) + 1)
|
||||
|> Enum.at(0)
|
||||
|> IO.puts()
|
Loading…
Add table
Reference in a new issue