June 2018 Update

This commit is contained in:
Ingy döt Net 2018-06-22 20:57:24 +00:00
parent ba8067c3b7
commit 22f33d4004
5278 changed files with 84726 additions and 14379 deletions

View 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));
}
}
}
}

View file

@ -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))
]
].

View 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

View file

@ -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))

View file

@ -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))

View 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)

View file

@ -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)

View file

@ -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
;

View file

@ -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);

View 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) );
}

View 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