Skip to content

Instantly share code, notes, and snippets.

@sammylupt
Created February 10, 2016 17:31
Show Gist options
  • Save sammylupt/4b7f509066d2acdec48f to your computer and use it in GitHub Desktop.
Save sammylupt/4b7f509066d2acdec48f to your computer and use it in GitHub Desktop.
defmodule HappyNumberFinder do
def find(number) when number > 0 do
_find(number, [])
end
defp get_sum(number) do
number
|> Integer.digits
|> Enum.map(fn(x) -> x * x end)
|> Enum.reduce(fn(x, total) -> x + total end)
end
defp _find(number, guesses) do
case number in guesses do
true -> {:unhappy}
false -> compute_result(number, guesses)
end
end
defp compute_result(number, guesses) do
sum = get_sum(number)
case sum do
1 -> {:happy}
_ -> _find(sum, [number | guesses])
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment