June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
32
Task/Ackermann-function/C-sharp/ackermann-function-1.cs
Normal file
32
Task/Ackermann-function/C-sharp/ackermann-function-1.cs
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
using System;
|
||||
class Program
|
||||
{
|
||||
public static long Ackermann(long m, long n)
|
||||
{
|
||||
if(m > 0)
|
||||
{
|
||||
if (n > 0)
|
||||
return Ackermann(m - 1, Ackermann(m, n - 1));
|
||||
else if (n == 0)
|
||||
return Ackermann(m - 1, 1);
|
||||
}
|
||||
else if(m == 0)
|
||||
{
|
||||
if(n >= 0)
|
||||
return n + 1;
|
||||
}
|
||||
|
||||
throw new System.ArgumentOutOfRangeException();
|
||||
}
|
||||
|
||||
static void Main()
|
||||
{
|
||||
for (long m = 0; m <= 3; ++m)
|
||||
{
|
||||
for (long n = 0; n <= 4; ++n)
|
||||
{
|
||||
Console.WriteLine("Ackermann({0}, {1}) = {2}", m, n, Ackermann(m, n));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -11,18 +11,18 @@ ackermann = (:m:n)
|
|||
0 [ ^n + 1 ];
|
||||
! [
|
||||
n =>
|
||||
0 [ ^ackermann eval(m - 1,1) ];
|
||||
! [ ^ackermann eval(m - 1,ackermann eval(m,n-1)) ]
|
||||
0 [ ^ackermann(m - 1,1) ];
|
||||
! [ ^ackermann(m - 1,ackermann(m,n-1)) ]
|
||||
]
|
||||
].
|
||||
|
||||
program =
|
||||
public program =
|
||||
[
|
||||
0 to:3 do(:i)
|
||||
[
|
||||
0 to:5 do(:j)
|
||||
[
|
||||
console printLine("A(",i,",",j,")=",ackermann eval(i,j))
|
||||
console printLine("A(",i,",",j,")=",ackermann(i,j))
|
||||
]
|
||||
].
|
||||
|
||||
|
|
|
|||
21
Task/Ackermann-function/Gambas/ackermann-function.gambas
Normal file
21
Task/Ackermann-function/Gambas/ackermann-function.gambas
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
Public Function ackermann (m as Float, n as Float) as Float
|
||||
If m = 0 then
|
||||
return n + 1
|
||||
end If
|
||||
If n = 0 then
|
||||
return ackermann(m - 1, 1)
|
||||
end If
|
||||
return ackermann(m - 1, ackermann(m, n - 1))
|
||||
|
||||
End
|
||||
|
||||
|
||||
Public Sub Main()
|
||||
Dim m, n as Float
|
||||
For m = 0 to 3
|
||||
For n = 0 to 4
|
||||
print "Ackerman(";m;",";n;")=";ackermann(m, n)
|
||||
Next
|
||||
Next
|
||||
|
||||
End
|
||||
|
|
@ -1 +1 @@
|
|||
ack2(m,n) = m == 0 ? n + 1 : n == 0 ? ack2(m-1,1) : ack2(m-1,ack2(m,n-1))
|
||||
ack2(m::Integer, n::Integer) = m == 0 ? n + 1 : n == 0 ? ack2(m - 1, 1) : ack2(m - 1, ack2(m, n - 1))
|
||||
|
|
|
|||
|
|
@ -1,5 +1,2 @@
|
|||
using Memoize
|
||||
@memoize ack3(m, n) =
|
||||
m == 0 ? n + 1 :
|
||||
n == 0 ? ack3(m-1, 1) :
|
||||
ack3(m-1, ack3(m, n-1))
|
||||
@memoize ack3(m::Integer, n::Integer) = m == 0 ? n + 1 : n == 0 ? ack3(m - 1, 1) : ack3(m - 1, ack3(m, n - 1))
|
||||
|
|
|
|||
2
Task/Ackermann-function/Klong/ackermann-function.klong
Normal file
2
Task/Ackermann-function/Klong/ackermann-function.klong
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
ack::{:[0=x;y+1:|0=y;.f(x-1;1);.f(x-1;.f(x;y-1))]}
|
||||
ack(2;2)
|
||||
|
|
@ -22,4 +22,4 @@ echo "First non-negative Integer please: "
|
|||
let first = getNumber()
|
||||
echo "Second non-negative Integer please: "
|
||||
let second = getNumber()
|
||||
echo "Reslut: ", $ackermann(first, second)
|
||||
echo "Result: ", $ackermann(first, second)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
: A(m, n)
|
||||
: A( m n -- p )
|
||||
m ifZero: [ n 1+ return ]
|
||||
n ifZero: [ A(m 1-, 1) return ]
|
||||
A(m 1-, A(m, n 1-)) ;
|
||||
m 1- n ifZero: [ 1 ] else: [ A( m, n 1- ) ] A
|
||||
;
|
||||
|
|
|
|||
|
|
@ -7,3 +7,7 @@ multi A(3, Int \𝑛) { 5 + 8 * (2 ** 𝑛 - 1) }
|
|||
|
||||
multi A(Int \𝑚, 0 ) { A(𝑚 - 1, 1) }
|
||||
multi A(Int \𝑚, Int \𝑛) { A(𝑚 - 1, A(𝑚, 𝑛 - 1)) }
|
||||
|
||||
# Testing:
|
||||
say A(4,1);
|
||||
say .chars, " digits starting with ", .substr(0,50), "..." given A(4,2);
|
||||
|
|
|
|||
9
Task/Ackermann-function/Processing/ackermann-function
Normal file
9
Task/Ackermann-function/Processing/ackermann-function
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
int ackermann(int m, n)
|
||||
{
|
||||
if (m == 0)
|
||||
return n + 1;
|
||||
else if (m > 0 && n == 0)
|
||||
return ackermann(m - 1, 1);
|
||||
else
|
||||
return ackermann( m - 1, ackermann(m, n - 1) );
|
||||
}
|
||||
15
Task/Ackermann-function/Simula/ackermann-function.simula
Normal file
15
Task/Ackermann-function/Simula/ackermann-function.simula
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
BEGIN
|
||||
INTEGER procedure
|
||||
Ackermann(g, p); SHORT INTEGER g, p;
|
||||
Ackermann:= IF g = 0 THEN p+1
|
||||
ELSE Ackermann(g-1, IF p = 0 THEN 1
|
||||
ELSE Ackermann(g, p-1));
|
||||
|
||||
INTEGER g, p;
|
||||
FOR p := 0 STEP 3 UNTIL 13 DO BEGIN
|
||||
g := 4 - p/3;
|
||||
outtext("Ackermann("); outint(g, 0);
|
||||
outchar(','); outint(p, 2); outtext(") = ");
|
||||
outint(Ackermann(g, p), 0); outimage
|
||||
END
|
||||
END
|
||||
Loading…
Add table
Add a link
Reference in a new issue