Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
25
Task/Ackermann-function/REXX/ackermann-function-1.rexx
Normal file
25
Task/Ackermann-function/REXX/ackermann-function-1.rexx
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
/*REXX program calculates and displays some values for the Ackermann function. */
|
||||
/*╔════════════════════════════════════════════════════════════════════════╗
|
||||
║ Note: the Ackermann function (as implemented here) utilizes deep ║
|
||||
║ recursive and is limited by the largest number that can have ║
|
||||
║ "1" (unity) added to a number (successfully and accurately). ║
|
||||
╚════════════════════════════════════════════════════════════════════════╝*/
|
||||
high=24
|
||||
do j=0 to 3; say
|
||||
do k=0 to high % (max(1, j))
|
||||
call tell_Ack j, k
|
||||
end /*k*/
|
||||
end /*j*/
|
||||
exit /*stick a fork in it, we're all done. */
|
||||
/*──────────────────────────────────────────────────────────────────────────────────────*/
|
||||
tell_Ack: parse arg mm,nn; calls=0 /*display an echo message to terminal. */
|
||||
#=right(nn,length(high))
|
||||
say 'Ackermann('mm", "#')='right(ackermann(mm, nn), high),
|
||||
left('', 12) 'calls='right(calls, high)
|
||||
return
|
||||
/*──────────────────────────────────────────────────────────────────────────────────────*/
|
||||
ackermann: procedure expose calls /*compute value of Ackermann function. */
|
||||
parse arg m,n; calls=calls+1
|
||||
if m==0 then return n+1
|
||||
if n==0 then return ackermann(m-1, 1)
|
||||
return ackermann(m-1, ackermann(m, n-1) )
|
||||
21
Task/Ackermann-function/REXX/ackermann-function-2.rexx
Normal file
21
Task/Ackermann-function/REXX/ackermann-function-2.rexx
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/*REXX program calculates and displays some values for the Ackermann function. */
|
||||
high=24
|
||||
do j=0 to 3; say
|
||||
do k=0 to high % (max(1, j))
|
||||
call tell_Ack j, k
|
||||
end /*k*/
|
||||
end /*j*/
|
||||
exit /*stick a fork in it, we're all done. */
|
||||
/*──────────────────────────────────────────────────────────────────────────────────────*/
|
||||
tell_Ack: parse arg mm,nn; calls=0 /*display an echo message to terminal. */
|
||||
#=right(nn,length(high))
|
||||
say 'Ackermann('mm", "#')='right(ackermann(mm, nn), high),
|
||||
left('', 12) 'calls='right(calls, high)
|
||||
return
|
||||
/*──────────────────────────────────────────────────────────────────────────────────────*/
|
||||
ackermann: procedure expose calls /*compute value of Ackermann function. */
|
||||
parse arg m,n; calls=calls+1
|
||||
if m==0 then return n + 1
|
||||
if n==0 then return ackermann(m-1, 1)
|
||||
if m==2 then return n + 3 + n
|
||||
return ackermann(m-1, ackermann(m, n-1) )
|
||||
36
Task/Ackermann-function/REXX/ackermann-function-3.rexx
Normal file
36
Task/Ackermann-function/REXX/ackermann-function-3.rexx
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
/*REXX program calculates and displays some values for the Ackermann function. */
|
||||
numeric digits 100 /*use up to 100 decimal digit integers.*/
|
||||
/*╔═════════════════════════════════════════════════════════════╗
|
||||
║ When REXX raises a number to an integer power (via the ** ║
|
||||
║ operator, the power can be positive, zero, or negative). ║
|
||||
║ Ackermann(5,1) is a bit impractical to calculate. ║
|
||||
╚═════════════════════════════════════════════════════════════╝*/
|
||||
high=24
|
||||
do j=0 to 4; say
|
||||
do k=0 to high % (max(1, j))
|
||||
call tell_Ack j, k
|
||||
if j==4 & k==2 then leave /*there's no sense in going overboard. */
|
||||
end /*k*/
|
||||
end /*j*/
|
||||
exit /*stick a fork in it, we're all done. */
|
||||
/*──────────────────────────────────────────────────────────────────────────────────────*/
|
||||
tell_Ack: parse arg mm,nn; calls=0 /*display an echo message to terminal. */
|
||||
#=right(nn,length(high))
|
||||
say 'Ackermann('mm", "#')='right(ackermann(mm, nn), high),
|
||||
left('', 12) 'calls='right(calls, high)
|
||||
return
|
||||
/*──────────────────────────────────────────────────────────────────────────────────────*/
|
||||
ackermann: procedure expose calls /*compute value of Ackermann function. */
|
||||
parse arg m,n; calls=calls+1
|
||||
if m==0 then return n + 1
|
||||
if m==1 then return n + 2
|
||||
if m==2 then return n + 3 + n
|
||||
if m==3 then return 2**(n+3) - 3
|
||||
if m==4 then do; #=2 /* [↓] Ugh! ··· and still more ughs.*/
|
||||
do (n+3)-1 /*This is where the heavy lifting is. */
|
||||
#=2**#
|
||||
end
|
||||
return #-3
|
||||
end
|
||||
if n==0 then return ackermann(m-1, 1)
|
||||
return ackermann(m-1, ackermann(m, n-1) )
|
||||
Loading…
Add table
Add a link
Reference in a new issue