master amadaluzia/rosetta-collatz / nim / src / rosetta_collatz.nim
 1import std/strformat
 2
 3func collatz(n: int64): int64 =
 4  return if n mod 2 == 0:
 5    n div 2
 6  else:
 7    3 * n + 1
 8
 9proc collatzSequence(n: int64): string =
10  result = fmt"{n}: "
11  var i = collatz(n)
12  while i != 1:
13    result &= fmt"{i}, "
14    i = collatz(i)
15  result &= "1"
16
17proc main() =
18  for i in 1 .. 10000:
19    echo collatzSequence(i)
20
21when isMainModule:
22  main()