CIM Back to the Win32 Shootout
Back to dada's perl lab

[The Original Shootout]   [NEWS]   [FAQ]   [Methodology]   [Platform Details]   [Acknowledgements]   [Scorecard]  
All Source For cim
Ackermann's Function
% $Id: ackermann.cim,v 1.2 2002/05/16 15:30:00 dada Exp $
external class UNIX;
begin

    integer procedure Ack(m, n); integer m, n;
    begin
        if m = 0 then Ack := n + 1        
        else if n = 0 then Ack := Ack(m-1, 1)
        else Ack := Ack(m-1, Ack(m, n-1));
    end;

    integer i;
    text t;
    t :- Blanks(80);
    t := Arg(1);
    comment OutInt(Argc, 4);
    comment OutText(Arg(1));    
    i := t.getInt;
    if i < 1 then i := 1;
    OutText("Ack(3,");
    OutInt(i, 0);
    OutText("): ");
    OutInt(Ack(3, i), 0);
    OutImage;
end
Fibonacci Numbers
% $Id: fibo.cim,v 1.2 2002/05/16 15:28:00 dada Exp $
external class UNIX;
begin

    integer procedure fib(n); integer n;
    begin
        if n < 2 then fib := 1
        else fib := fib(n-2) + fib(n-1);
    end;

    integer i;
    text t;
    t :- Blanks(80);
    t := Arg(1);
    comment OutInt(Argc, 4);
    comment OutText(Arg(1));    
    i := t.getInt;
    if i < 1 then i := 1;
    OutInt(fib(i),0);
    OutImage;
end
Hello World
% $Id: hello.cim,v 1.2 2002/05/16 15:38:00 dada Exp $
begin
    OutText("hello world");
    OutImage;
end
Nested Loops
% $Id: nestedloop.cim,v 1.0 2002/11/07 15:47:00 dada Exp $
external class UNIX;
begin

    integer n, a, b, c, d, e, f, x;
    text t;
    t :- Blanks(80);
    t := Arg(1);
    n := t.getInt;
    if n < 1 then n := 1;
    For a := 1 step 1 until n do
    For b := 1 step 1 until n do
    For c := 1 step 1 until n do
    For d := 1 step 1 until n do
    For e := 1 step 1 until n do
    For f := 1 step 1 until n do
    x := x + 1;
    OutInt(x,0);
    OutImage;
end
Sum a Column of Integers
% $Id: sumcol.cim,v 1.0 2002/10/29 13:41:00 dada Exp $
external class UNIX;
begin

    integer i, tot;
    inspect SysIn do
    while not SysIn.LastItem do
    begin
        i := InInt;
        tot := tot + i;
    end;
    OutInt(tot, 0);
    OutImage;
end