Data update

This commit is contained in:
Ingy döt Net 2025-08-11 18:05:26 -07:00
parent 4d5544505c
commit 4924dd0264
3073 changed files with 55820 additions and 4408 deletions

View file

@ -0,0 +1,8 @@
(let ackermann (fun (m n) {
(if (> m 0)
(if (= 0 n)
(ackermann (- m 1) 1)
(ackermann (- m 1) (ackermann m (- n 1))))
(+ 1 n)) }))
(assert (= 509 (ackermann 3 6)) "(ackermann 3 6) == 509")

View file

@ -0,0 +1,13 @@
function ack(m,n)
if m==0 then
return n+1
elseif n == 0 then
return ack(m-1,1)
else return ack(m-1,ack(m,n-1)) end
end
for i = 0,3 do
for j = 0,8 do
print($"A({i},{j})={ack(i,j)}")
end
end

View file

@ -0,0 +1,7 @@
ackermann: func [m n] [
case [
m = 0 [n + 1]
n = 0 [ackermann m - 1 1]
true [ackermann m - 1 ackermann m n - 1]
]
]

View file

@ -0,0 +1,16 @@
ackermann: func [
m [integer!]
n [integer!]
] [
;; Small-m closed forms
case [
m = 0 [n + 1]
m = 1 [n + 2]
m = 2 [(2 * n) + 3]
m = 3 [
;; 2^(n+3) - 3
(to integer! power 2 (n + 3)) - 3
]
;; m >= 4 causes stack overflow
]
]

View file

@ -0,0 +1,11 @@
ackermann (n) (m) :
? n = 0
:> m+1
? m = 0
:> ackermann (n-1) 1
:> ackermann (n-1) ackermann n (m-1) \ = ackermann (n-1) (ackermann n (m-1))
\ test it
main(params):+
p1 =: string params[1] as integer else 3
p2 =: string params[2] as integer else 5
print "ackermann(" _ p1 _ "," _ p2 _ ") = " _ ackermann p1 p2