summaryrefslogtreecommitdiff
path: root/ipl/packs/euler/t6.eul
blob: 154f8346ff4c2c024e0a0b483323e8490433c282 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
begin new for; new sum; new equal;
	new i; new array; new x;
	new a1; new a2;
for <- 'formal v; formal n; formal s;
     begin label k;
     v <- 1;
  k: if v <= n then
          begin s;
          v <- v + 1;
          goto k
          end
     else undef
     end';

x<-(1,2,3,4,5);
sum <- 0;
for(@i,length x,'sum<-sum+x[i]') ;
out sum;

equal<-'formal x; formal y;
     begin new t; new i; label k;
     t <- false;
     if isli x and isli y and length x = length y then
          begin
          for(@i,length x,
               'if ~ equal(x[i],y[i]) then goto k else undef');
          t <- true
          end
     else t <- isn x and isn y and x=y;
  k: t
     end';

out equal(1,1);

array<-'formal l; formal x;
     begin new t; new a; new b; new i;
     b <- l; t <- list b[1];
     a <- 'if length b>1 then array(tail b,x) else x';
     for(@i,b[1],'t[i]<-a');
     t
     end';
a1 <- array((2,3,4),1);
a2 <- array((2,3,4),1);
out equal(a1,a2)

end