elm/exercises/collatz-conjecture/CollatzConjecture.example.elm
2017-10-07 18:36:25 +02:00

19 lines
452 B
Elm

module CollatzConjecture exposing (collatz)
collatz : Int -> Result String Int
collatz start =
if start <= 0 then
Err "Only positive numbers are allowed"
else
Ok (collatzHelper 0 start)
collatzHelper : Int -> Int -> Int
collatzHelper steps start =
if start == 1 then
steps
else if start % 2 == 0 then
collatzHelper (1 + steps) (start // 2)
else
collatzHelper (1 + steps) (3 * start + 1)