update
This commit is contained in:
parent
1f1ad49427
commit
6f050a029e
2496 changed files with 37609 additions and 3031 deletions
|
|
@ -3,7 +3,7 @@ note
|
|||
URI: "http://rosettacode.org/wiki/Ackermann_function"
|
||||
|
||||
class
|
||||
ACKERMAN_EXAMPLE
|
||||
APPLICATION
|
||||
|
||||
create
|
||||
make
|
||||
|
|
@ -27,15 +27,14 @@ feature {NONE} -- Initialization
|
|||
|
||||
feature -- Access
|
||||
|
||||
ackerman (m: NATURAL; n: NATURAL): NATURAL
|
||||
ackerman (m, n: NATURAL): NATURAL
|
||||
do
|
||||
if m = 0 then
|
||||
Result := n + 1
|
||||
elseif m > 0 and n = 0 then
|
||||
elseif n = 0 then
|
||||
Result := ackerman (m - 1, 1)
|
||||
elseif m > 0 and n > 0 then
|
||||
else
|
||||
Result := ackerman (m - 1, ackerman (m, n - 1))
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,10 +1,8 @@
|
|||
-module(main).
|
||||
-export([main/1]).
|
||||
-module(ack).
|
||||
-export([main/1, ack/2]).
|
||||
|
||||
main( [ A | [ B |[]]]) ->
|
||||
io:fwrite("~p~n",[ack(toi(A),toi(B))]).
|
||||
|
||||
toi(E) -> element(1,string:to_integer(E)).
|
||||
main( [A, B] ) ->
|
||||
io:fwrite( "~p~n",[ack(erlang:list_to_integer(A), erlang:list_to_integer(B))] ).
|
||||
|
||||
ack(0,N) -> N + 1;
|
||||
ack(M,0) -> ack(M-1, 1);
|
||||
|
|
|
|||
22
Task/Ackermann-function/FBSL/ackermann-function-1.fbsl
Normal file
22
Task/Ackermann-function/FBSL/ackermann-function-1.fbsl
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#APPTYPE CONSOLE
|
||||
|
||||
TestAckermann()
|
||||
|
||||
PAUSE
|
||||
|
||||
SUB TestAckermann()
|
||||
FOR DIM m = 0 TO 3
|
||||
FOR DIM n = 0 TO 10
|
||||
PRINT AckermannF(m, n), " ";
|
||||
NEXT
|
||||
PRINT
|
||||
NEXT
|
||||
END SUB
|
||||
|
||||
FUNCTION AckermannF(m AS INTEGER, n AS INTEGER) AS INTEGER
|
||||
IF NOT m THEN RETURN n + 1
|
||||
IF NOT n THEN RETURN AckermannA(m - 1, 1)
|
||||
RETURN AckermannC(m - 1, AckermannF(m, n - 1))
|
||||
END FUNCTION
|
||||
|
||||
DYNC AckermannC(m AS INTEGER, n AS INTEGER) AS INTEGER
|
||||
11
Task/Ackermann-function/FBSL/ackermann-function-2.fbsl
Normal file
11
Task/Ackermann-function/FBSL/ackermann-function-2.fbsl
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
int Ackermann(int m, int n)
|
||||
{
|
||||
if (!m) return n + 1;
|
||||
if (!n) return Ackermann(m - 1, 1);
|
||||
return Ackermann(m - 1, Ackermann(m, n - 1));
|
||||
}
|
||||
|
||||
int main(int m, int n)
|
||||
{
|
||||
return Ackermann(m, n);
|
||||
}
|
||||
3
Task/Ackermann-function/FBSL/ackermann-function-3.fbsl
Normal file
3
Task/Ackermann-function/FBSL/ackermann-function-3.fbsl
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
END DYNC
|
||||
|
||||
DYNASM AckermannA(m AS INTEGER, n AS INTEGER) AS INTEGER
|
||||
35
Task/Ackermann-function/FBSL/ackermann-function-4.fbsl
Normal file
35
Task/Ackermann-function/FBSL/ackermann-function-4.fbsl
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
ENTER 0, 0
|
||||
INVOKE Ackermann, m, n
|
||||
LEAVE
|
||||
RET
|
||||
|
||||
@Ackermann
|
||||
ENTER 0, 0
|
||||
|
||||
.IF DWORD PTR [m] .THEN
|
||||
JMP @F
|
||||
.ENDIF
|
||||
MOV EAX, n
|
||||
INC EAX
|
||||
JMP xit
|
||||
|
||||
@@
|
||||
.IF DWORD PTR [n] .THEN
|
||||
JMP @F
|
||||
.ENDIF
|
||||
MOV EAX, m
|
||||
DEC EAX
|
||||
INVOKE Ackermann, EAX, 1
|
||||
JMP xit
|
||||
|
||||
@@
|
||||
MOV EAX, n
|
||||
DEC EAX
|
||||
INVOKE Ackermann, m, EAX
|
||||
MOV ECX, m
|
||||
DEC ECX
|
||||
INVOKE Ackermann, ECX, EAX
|
||||
|
||||
@xit
|
||||
LEAVE
|
||||
RET 8
|
||||
1
Task/Ackermann-function/FBSL/ackermann-function-5.fbsl
Normal file
1
Task/Ackermann-function/FBSL/ackermann-function-5.fbsl
Normal file
|
|
@ -0,0 +1 @@
|
|||
END DYNASM
|
||||
9
Task/Ackermann-function/Julia/ackermann-function-1.julia
Normal file
9
Task/Ackermann-function/Julia/ackermann-function-1.julia
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
function ack(m,n)
|
||||
if m == 0
|
||||
return n + 1
|
||||
elseif n == 0
|
||||
return ack(m-1,1)
|
||||
else
|
||||
return ack(m-1,ack(m,n-1))
|
||||
end
|
||||
end
|
||||
1
Task/Ackermann-function/Julia/ackermann-function-2.julia
Normal file
1
Task/Ackermann-function/Julia/ackermann-function-2.julia
Normal file
|
|
@ -0,0 +1 @@
|
|||
ack2(m,n) = m == 0 ? n + 1 : n == 0 ? ack2(m-1,1) : ack2(m-1,ack2(m,n-1))
|
||||
|
|
@ -1,7 +1,5 @@
|
|||
#lang racket
|
||||
(define (ackermann m n)
|
||||
(cond [(zero? m) (add1 n)]
|
||||
[(and (> m 0) (zero? n))
|
||||
(ackermann (sub1 m) 1)]
|
||||
[(and (> m 0) (> n 0))
|
||||
(ackermann (sub1 m) (ackermann m (sub1 n)))]))
|
||||
[(zero? n) (ackermann (sub1 m) 1)]
|
||||
[else (ackermann (sub1 m) (ackermann m (sub1 n)))]))
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
("ackermann") m n
|
||||
(ackermann) m n
|
||||
0 3
|
||||
(zero?) m
|
||||
(add1) n
|
||||
|
||||
("ackermann") m n
|
||||
(ackermann) m n
|
||||
2 0
|
||||
(and) (positive?) m (zero?) n
|
||||
("ackermann") (sub1) m 1
|
||||
(ackermann) (sub1) m 1
|
||||
|
||||
("ackermann") m n
|
||||
(ackermann) m n
|
||||
2 3
|
||||
(and) (positive?) m (positive?) n
|
||||
("ackermann") (sub1) m ("ackermann") m (sub1) n
|
||||
(ackermann) (sub1) m (ackermann) m (sub1) n
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue