September Morn Update
This commit is contained in:
parent
4e2d22a71d
commit
aac6731f2c
6856 changed files with 141342 additions and 21127 deletions
24
Task/Ackermann-function/BASIC/ackermann-function-1.basic
Normal file
24
Task/Ackermann-function/BASIC/ackermann-function-1.basic
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
100 DIM R%(2900),M(2900),N(2900)
|
||||
110 FOR M = 0 TO 3
|
||||
120 FOR N = 0 TO 4
|
||||
130 GOSUB 200"ACKERMANN
|
||||
140 PRINT "ACK("M","N") = "ACK
|
||||
150 NEXT N, M
|
||||
160 END
|
||||
|
||||
200 M(SP) = M
|
||||
210 N(SP) = N
|
||||
|
||||
REM A(M - 1, A(M, N - 1))
|
||||
220 IF M > 0 AND N > 0 THEN N = N - 1 : R%(SP) = 0 : SP = SP + 1 : GOTO 200
|
||||
|
||||
REM A(M - 1, 1)
|
||||
230 IF M > 0 THEN M = M - 1 : N = 1 : R%(SP) = 1 : SP = SP + 1 : GOTO 200
|
||||
|
||||
REM N + 1
|
||||
240 ACK = N + 1
|
||||
|
||||
REM RETURN
|
||||
250 M = M(SP) : N = N(SP) : IF SP = 0 THEN RETURN
|
||||
260 FOR SP = SP - 1 TO 0 STEP -1 : IF R%(SP) THEN M = M(SP) : N = N(SP) : NEXT SP : SP = 0 : RETURN
|
||||
270 M = M - 1 : N = ACK : R%(SP) = 1 : SP = SP + 1 : GOTO 200
|
||||
33
Task/Ackermann-function/BASIC/ackermann-function-2.basic
Normal file
33
Task/Ackermann-function/BASIC/ackermann-function-2.basic
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
dim stack(5000, 3) # BASIC-256 lacks functions (as of ver. 0.9.6.66)
|
||||
stack[0,0] = 3 # M
|
||||
stack[0,1] = 7 # N
|
||||
lev = 0
|
||||
|
||||
gosub ackermann
|
||||
print "A("+stack[0,0]+","+stack[0,1]+") = "+stack[0,2]
|
||||
end
|
||||
|
||||
ackermann:
|
||||
if stack[lev,0]=0 then
|
||||
stack[lev,2] = stack[lev,1]+1
|
||||
return
|
||||
end if
|
||||
if stack[lev,1]=0 then
|
||||
lev = lev+1
|
||||
stack[lev,0] = stack[lev-1,0]-1
|
||||
stack[lev,1] = 1
|
||||
gosub ackermann
|
||||
stack[lev-1,2] = stack[lev,2]
|
||||
lev = lev-1
|
||||
return
|
||||
end if
|
||||
lev = lev+1
|
||||
stack[lev,0] = stack[lev-1,0]
|
||||
stack[lev,1] = stack[lev-1,1]-1
|
||||
gosub ackermann
|
||||
stack[lev,0] = stack[lev-1,0]-1
|
||||
stack[lev,1] = stack[lev,2]
|
||||
gosub ackermann
|
||||
stack[lev-1,2] = stack[lev,2]
|
||||
lev = lev-1
|
||||
return
|
||||
19
Task/Ackermann-function/BASIC/ackermann-function-3.basic
Normal file
19
Task/Ackermann-function/BASIC/ackermann-function-3.basic
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# BASIC256 since 0.9.9.1 supports functions
|
||||
for m = 0 to 3
|
||||
for n = 0 to 4
|
||||
print m + " " + n + " " + ackermann(m,n)
|
||||
next n
|
||||
next m
|
||||
end
|
||||
|
||||
function ackermann(m,n)
|
||||
if m = 0 then
|
||||
ackermann = n+1
|
||||
else
|
||||
if n = 0 then
|
||||
ackermann = ackermann(m-1,1)
|
||||
else
|
||||
ackermann = ackermann(m-1,ackermann(m,n-1))
|
||||
endif
|
||||
end if
|
||||
end function
|
||||
7
Task/Ackermann-function/BASIC/ackermann-function-4.basic
Normal file
7
Task/Ackermann-function/BASIC/ackermann-function-4.basic
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
PRINT FNackermann(3, 7)
|
||||
END
|
||||
|
||||
DEF FNackermann(M%, N%)
|
||||
IF M% = 0 THEN = N% + 1
|
||||
IF N% = 0 THEN = FNackermann(M% - 1, 1)
|
||||
= FNackermann(M% - 1, FNackermann(M%, N%-1))
|
||||
Loading…
Add table
Add a link
Reference in a new issue