aboutsummaryrefslogtreecommitdiff
path: root/challenge-017/archargelod/nim/ch_1.nim
blob: da820ff5d7427e4a589644fbcb2fc8ee23106484 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env -S nim r -d:release --verbosity:0 --hints:off

proc ackermann(m, n: Natural): int =
  if m == 0:
    n + 1
  elif n == 0:
    ackermann(m - 1, 1)
  else:
    ackermann(m - 1, ackermann(m, n - 1))

when isMainModule:
  import std/unittest

  suite "Ackermann function":
    test "A(1, 2) == 4":
      check ackermann(1, 2) == 4