Skip to content

Instantly share code, notes, and snippets.

@multun
Created September 9, 2020 09:40

Revisions

  1. multun created this gist Sep 9, 2020.
    21 changes: 21 additions & 0 deletions ackermann.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,21 @@
    from functools import lru_cache


    @lru_cache(maxsize=1024)
    def kn(a, b, order):
    assert order >= 1
    if order == 1:
    return a ** b
    sub_order = order - 1
    res = a
    for i in range(order):
    res = kn(res, b, sub_order)
    return res


    def conway(p, q, r):
    return kn(p, q, r)


    def ackermann(m, n):
    return conway(2, n + 3, m - 2) - 3