let chain n = let rec aux a = function | n when n <= 1 -> n::a | n when n mod 2 <> 0 -> aux (n :: a) (n * 3 + 1) | n -> aux (n :: a) (n / 2) in let range a b = let rec aux a b acc = if b < a then acc else aux a (b - 1) (b :: acc) in aux a b [] let f884 a b c = let () = p (chain 10) let () = p (chain 30)
Standard input is empty
[10, 5, 16, 8, 4, 2, 1] [30, 15, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1] 71