1
(* The Computer Language Shootout
2
http://shootout.alioth.debian.org/
4
contributed by Josh Goldfoot
5
modified by Vincent Snijders
15
function Ack(x : integer; y : integer): integer;
21
else Ack := Ack(x-1, Ack(x, y-1));
24
function Fib(n : integer): integer;
28
else Fib := Fib(n - 2) + Fib(n - 1)
31
function FibFP(n : double): double;
35
else FibFP := FibFP(n - 2) + FibFP(n - 1)
38
function Tak(x : integer; y: integer; z : integer): integer;
41
Tak := Tak( Tak(x-1, y, z), Tak(y-1, z, x), Tak(z-1, x, y) )
45
function TakFP(x : double; y: double; z : double): double;
48
TakFP := TakFP( TakFP(x-1, y, z), TakFP(y-1, z, x), TakFP(z-1, x, y) )
53
if ParamCount = 1 then begin
59
writeLn('Ack(3,', n + 1, '): ', Ack(3, n+1));
60
writeLn('Fib(', (28.0 + n):1:1, '): ', FibFP(28.0 + n):1:1);
61
writeLn('Tak(', 3 * n,',', 2 * n, ',', n, '): ', Tak(3*n, 2*n, n));
62
writeLn('Fib(3): ', Fib(3));
63
writeLn('Tak(3.0,2.0,1.0): ', TakFP(3.0,2.0,1.0):1:1);