17 lines
458 B
Nim
17 lines
458 B
Nim
import std/[unicode, strformat]
|
|
|
|
func sudan(n, x, y: Natural): int =
|
|
if n == 0: return x + y
|
|
if y == 0: return x
|
|
let z = sudan(n, x, y - 1)
|
|
return sudan(n - 1, z, z + y)
|
|
|
|
const Delta = ord("₀".toRunes()[0]) - ord('0')
|
|
|
|
func subscript(n: Natural): string =
|
|
for c in $n:
|
|
result.add Rune(ord(c) + Delta)
|
|
|
|
for (n, x, y) in [(0, 0, 0), (1, 1, 1), (2, 1, 1), (2, 2, 1), (2, 2, 2), (3, 1, 1)]:
|
|
echo &"F{subscript(n)}({x}, {y}) = {sudan(n, x, y)}"
|