1 From: MX%"antek@mimuw.edu.pl" 1-MAR-1993 16:00:42.56
\r
6 Date: Mon, 1 Mar 93 14:59:41 GMT
\r
7 From: antek@mimuw.edu.pl
\r
8 To: salwicki@pauvx1.univ-pau.fr
\r
14 var left,right : node,
\r
17 unit ins: procedure( value: integer) ;
\r
26 call left.ins(value);
\r
34 call right.ins(value)
\r
41 unit traverse : coroutine (i:integer);
\r
45 unit t: procedure(y:node);
\r
59 detach with endtree(i);
\r
61 signal endtree(t:integer),fin ;
\r
63 var n,i,j,min,m,k: integer,
\r
65 tr: arrayof traverse,
\r
81 write(tr(j).val); writeln;
\r
84 when fin : terminate;
\r
90 read(j); write(j); if j>m then m:=j fi;
\r
95 if j=-1 then writeln; exit fi;
\r
97 if j>m then m:=j fi;
\r
101 array tr dim (1:n);
\r
105 tr(i):=new traverse(i);
\r
114 if min > tr(i).val then min:=tr(i).val; j:=i fi;
\r
116 write(min); attach(tr(j));
\r
117 k:=k+1; if k=10 then writeln; k:=0 fi;
\r
127 #include "rsdata.h"
\r
130 extern int IC; /* global control */
\r
131 extern int modulenumber; /* module number */
\r
132 extern unsigned int *DISPVIRT,*DISPDIR; /* displays' addresses */
\r
133 extern unsigned int *lastcor,*mycoroutine,*myprocess;
\r
134 extern unsigned int *current,*local,*global;
\r
140 int displdir = -15;
\r
144 int protnum=numprot;
\r
147 int perm [] = { 0,1,2};
\r
148 int perminv [] = { 0,1,2};
\r
150 struct Prototype PROT [] =
\r
152 kind num lspn rspn ref dcl lev lst pmdd Sl DL Lsc Stat hand pref pslen */
\r
154 {2, 0, 15, 27, 0, -1, 0, 7, 0, 27, 26, 25, 24, 0, -1, 1},
\r
155 {0, 1, 0, 9, 1, 0, 1, 2, 0, 9, 8, 7, 6, -1, -1, 1},
\r
156 {1, 2, 0, 9, 2, 1, 2, 6, 0, 9, 8, 7, 6, -1, -1, 1},
\r
157 {3, 3, 1, 9, 3, 0, 1, 4, 0, 9, 8, 7, 6, -1, -1, 1},
\r
158 {1, 4, 0, 9, 4, 3, 2, 5, 0, 9, 8, 7, 6, -1, -1, 1},
\r
160 {4, 6, 0, 9, 1, 0, 1, 4, 0, 9, 8, 7, 6, 0},
\r
161 {4, 7, 0, 9, 1, 0, 1, 2, 0, 9, 8, 7, 6, 0}
\r
165 int (* module [numprot]) () ;
\r
168 struct Offsets OFF[]=
\r
169 { 0, 43, 0, 11, 0, 0, 0,
\r
170 0, 10, 1, 2, 0, 11, 0,
\r
171 0, 10, 2, 3, 0, 13, 0,
\r
172 0, 10, 3, 4, 0, 16, 0,
\r
173 0, 10, 4, 4, 0, 20, 0 };
\r
202 struct Hlstelem HL[]= { 6,0,1,
\r
204 struct Sgelem SL[]= { 101,-1,
\r
212 case 1: goto L1; break;
\r
213 case 2: goto L2; break;
\r
224 case 1: goto L1; break;
\r
225 case 2: goto L2; break;
\r
226 case 3: goto L3; break;
\r
227 case 4: goto L4; break;
\r
228 case 5: goto L5; break;
\r
229 case 6: goto L6; break;
\r
233 if (*Address(1,5) > *Local(1))
\r
235 if (Notmember(Address(1,1)))
\r
237 Dopen(1,0,Address(1,1));
\r
238 IC=2; Go(Address(1,1));
\r
240 *(Physical(Address(1,1))+5)= *Local(1);
\r
244 Slopen(2,Local(2),Address(1,1));
\r
245 *(Physical(Local(2))+1)= *Local(1);
\r
246 IC=3; Go(Local(2));
\r
252 if (Notmember(Address(1,3)))
\r
254 Dopen(1,0,Address(1,3));
\r
255 IC=4; Go(Address(1,3));
\r
256 L4: *(Physical(Address(1,3))+5)= *Local(1);
\r
260 Slopen(2,Local(2),Address(1,3));
\r
261 *(Physical(Local(2))+1)= *Local(1);
\r
262 IC=5; Go(Local(2));
\r
277 case 1: goto L1; break;
\r
278 case 2: goto L2; break;
\r
279 case 3: goto L3; break;
\r
280 case 4: goto L4; break;
\r
282 L1: Refmove(Local(1),Arrayelem(Global(7),*Local(-1)));
\r
284 L2: Dopen(4,3,Local(4));
\r
285 Refmove(Physical(Local(4))+1,Local(1));
\r
286 IC=3; Go(Local(4));
\r
288 Attachwith(lastcor,101,Local(4));
\r
289 *(Physical(Local(4))+5)= *Local(-1);
\r
299 case 1: goto L1; break;
\r
300 case 2: goto L2; break;
\r
301 case 3: goto L3; break;
\r
302 case 4: goto L4; break;
\r
303 case 5: goto L5; break;
\r
306 if (Member(Local(1)))
\r
307 { Dopen(4,3,Local(3));
\r
308 Refmove(Physical(Local(3))+1,Physical(Local(1))+1);
\r
309 IC=2; Go(Local(3));
\r
311 *Address(1,3)= *(Physical(Local(1))+5);
\r
312 IC=3; Attach(lastcor);
\r
313 L3: Dopen(4,3,Local(3));
\r
314 Refmove(Physical(Local(3))+1,Physical(Local(1))+3);
\r
315 IC=4; Go(Local(3));
\r
329 case 1: goto L1; break;
\r
330 case 2: goto L2; break;
\r
331 case 3: goto L3; break;
\r
332 case 4: goto L4; break;
\r
333 case 5: goto L5; break;
\r
334 case 6: goto L6; break;
\r
335 case 7: goto L7; break;
\r
339 printf("Number of trees n=2\n"); *Global(1)=2;
\r
340 Openarray(5,1,*Global(1),Global(7));
\r
341 printf("Give the values of nodes. End each tree with -1\n");
\r
345 if (*Global(2)> *Global(1)) break;
\r
346 scanf("%d",Global(3));
\r
347 if (*Global(3) > *Global(5)) *Global(5)= *Global(3);
\r
348 Dopen(1,0,Arrayelem(Global(7),*Global(2)));
\r
349 IC=2; Go(Arrayelem(Global(7),*Global(2)));
\r
350 L2: *(Physical(Arrayelem(Global(7),*Global(2)))+5)= *Global(3);
\r
353 scanf("%d",Global(3));
\r
354 if (*Global(3) == -1) break;
\r
355 if (*Global(3) > *Global(5)) *Global(5)= *Global(3);
\r
356 Slopen(2,Global(16),Arrayelem(Global(7),*Global(2)));
\r
357 *(Physical(Global(16))+1)= *Global(3);
\r
358 IC=3; Go(Global(16));
\r
364 Openarray(5,1,*Global(1),Global(9));
\r
368 { if (*Global(2) > *Global(1)) break;
\r
369 Dopen(3,0,Arrayelem(Global(9),*Global(2)));
\r
370 *(Physical(Arrayelem(Global(9),*Global(2)))-1)=
\r
372 IC=4; Go(Arrayelem(Global(9),*Global(2)));
\r
373 L4: IC=5; Attach(Arrayelem(Global(9),*Global(2)));
\r
374 L5: (*Global(2))++;
\r
379 if (*Global(4) == *Global(5) ) break;
\r
380 *Global(4)= *(Physical(Arrayelem(Global(9),1))+3);
\r
385 if (*Global(2) > *Global(1)) break;
\r
386 if (*Global(4) > *(Physical(Arrayelem(Global(9),*Global(2)))+3))
\r
387 { *Global(4) = *(Physical(Arrayelem(Global(9),*Global(2)))+3);
\r
388 *Global(3)= *Global(2);
\r
392 if (*Global(4) < *Global(5))
\r
394 printf("%d ",*Global(4));
\r
395 IC=6; Attach(Arrayelem(Global(9),*Global(3)));
\r
396 L6: (*Global(6))++;
\r
397 if (*Global(6)==10) { printf(" \n"); *Global(6)=0; };
\r
411 case 1: goto L1; break;
\r
412 case 2: goto L2; break;
\r
413 case 3: goto L3; break;
\r
414 case 4: goto L4; break;
\r
418 { Raising(102,Address(1,1));
\r
419 IC=2; Go(Address(1,1));
\r
423 if (*Address(1,5)==1) *Global(3)=2; else *Global(3)=1;
\r
425 { if (IC==0) break; /* dummy */
\r
426 printf("%d ",*(Physical(Arrayelem(Global(9),*Global(3)))+3));
\r
428 if (*Global(6)==10) { printf(" \n"); *Global(6)=0; };
\r
429 IC=3; Attach(Arrayelem(Global(9),*Global(3)));
\r
440 case 1: goto L1; break;
\r
441 case 2: goto L2; break;
\r
463 if (setjmp(buffer)!=-2) module[modulenumber]();
\r
476 for i:=1 to n do write(A[i]," "); od;
\r
492 write("Generation of all permutations. Give n=");
\r
494 A:=array[1..n] of integer;
\r
501 #include "rsdata.h"
\r
505 extern int IC; /* global control */
\r
506 extern int modulenumber; /* module number */
\r
507 extern unsigned int *DISPVIRT,*DISPDIR; /* displays' addresses */
\r
508 extern unsigned int *lastcor,*mycoroutine,*myprocess;
\r
509 extern unsigned int *current,*local,*global;
\r
521 int protnum= numprot;
\r
524 int perm [] = { 0,0,1};
\r
525 int perminv [] = { 0,0,1};
\r
527 struct Prototype PROT [] =
\r
529 kind num lspn rspan ref dcl lev lst pmdd Sl DL Lsc Stat hand pref pslen*/
\r
531 {2, 0, 0, 27, 0, -1, 0, 0, 0, 27, 26, 25, 24, -1, -1, 1},
\r
532 {1, 1, 0, 9, 1, 0, 1, 0, 1, 9, 8, 7, 6, -1, -1, 1},
\r
537 int (* module [numprot]) ();
\r
540 struct Offsets OFF[]=
\r
541 { 0, 28, 0, 9, 0, 0, 0,
\r
542 0, 10, 1, 2, 0, 9, 0 };
\r
557 struct Hlstelem HL[]= { 0 };
\r
558 struct Sgelem SL[]= { 0 };
\r
565 { case 1: goto L1; break;
\r
566 case 2: goto L2; break;
\r
570 L1: printf("Generation of all permutations. Give n=");
\r
571 scanf("%d",Global(1));
\r
573 Openarray(2,1,*Global(1),Global(3));
\r
575 for (i=1; i<= *Global(1); i++)
\r
576 *Arrayelem(Global(3),i)=0;
\r
579 Dopen(1,0,Global(17)); IC=2;
\r
588 { case 1: goto L1; break;
\r
589 case 2: goto L2; break;
\r
594 if (*Global(2)== *Global(1)+1)
\r
596 for (i=1; i<= *Global(1); i++)
\r
597 printf("%d ",*(Arrayelem(Global(3),i)));
\r
603 for (i=1; i<= *Global(1);i++)
\r
605 if (*(Arrayelem(Global(3),i))==0)
\r
607 *(Arrayelem(Global(3),i))= *Global(2);
\r
609 Dopen(1,0,Global(17)); *Local(1)=i;
\r
610 IC=2; Go(Global(17));
\r
612 (*Global(2))--; i= *Local(1);
\r
613 *(Arrayelem(Global(3),i))=0;
\r
629 if (setjmp(buffer) !=-2) module[modulenumber]();
\r
635 var a,b,c,delta,x1,x2:real;
\r
637 writeln(" solution of square equation a*x**2 b*x +c=0");
\r
638 write(" give a= "); read(a);
\r
639 write(" give b= "); read(b);
\r
640 write(" give c= "); read(c);
\r
641 delta:=b**2 - 4*a*c;
\r
644 writeln(" no solutions"); endrun;
\r
646 delta:=sqrt(delta);
\r
647 x1:=(-b-delta)/2/a;
\r
648 x2:=(-b+delta)/2/a;
\r
649 writeln("x1=",x1,"x2=",x2);
\r
654 #include "rsdata.h"
\r
658 extern int IC; /* global control */
\r
659 extern int modulenumber; /* module number */
\r
660 extern unsigned int *DISPVIRT,*DISPDIR; /* displays' addresses */
\r
661 extern unsigned int *lastcor,*mycoroutine,*myprocess;
\r
662 extern unsigned int *current,*local,*global;
\r
667 #define rlh sizeof(float)/sizeof(int)
\r
671 #define coff 1+2*rlh
\r
672 #define deloff 1+3*rlh
\r
673 #define x1off 1+4*rlh
\r
674 #define x2off 1+5*rlh
\r
683 int protnum= numprot;
\r
686 int perm [] = { 0,0,1};
\r
687 int perminv [] = { 0,0,1};
\r
689 struct Prototype PROT [] =
\r
691 kind num lspn rspan ref dcl lev lst pmdd Sl DL Lsc Stat hand pref pslen*/
\r
693 {2, 0, 0, 27, 0, -1, 0, 0, 0, 27, 26, 25, 24, -1, -1, 1}
\r
697 int (* module [numprot+1]) () ;
\r
700 struct Offsets OFF[]=
\r
701 { 0, 28, 0, 6, 0, 0, 0 };
\r
713 struct Hlstelem HL[]= { 0 };
\r
714 struct Sgelem SL[]= { 0 };
\r
722 { case 1: goto L1; break;
\r
723 case 2: goto L2; break;
\r
726 L1: printf(" solution of square equation a*x**2 + b*x +c=0\n");
\r
727 printf(" \ngive a=");
\r
728 scanf("%f", Flglobal(aoff));
\r
729 printf(" \ngive b=");
\r
730 scanf("%f", Flglobal(boff));
\r
731 printf(" \ngive c=");
\r
732 scanf("%f", Flglobal(coff));
\r
733 * Flglobal(deloff) =
\r
734 (* Flglobal(boff))*(* Flglobal(boff))-
\r
735 4*(* Flglobal(aoff))*(* Flglobal(coff));
\r
736 if ( * Flglobal(deloff) < 0 )
\r
738 printf(" no solutions\n");
\r
741 * Flglobal(deloff) = sqrt( (double) * Flglobal(deloff) );
\r
742 * Flglobal(x1off) = (- * Flglobal(boff) -
\r
743 * Flglobal(deloff))/2/ * Flglobal(aoff);
\r
745 * Flglobal(x2off) = (- * Flglobal(boff) +
\r
746 * Flglobal(deloff))/2/ * Flglobal(aoff);
\r
747 printf(" \n x1=%f\n",* Flglobal(x1off));
\r
748 printf(" \n x2=%f\n",* Flglobal(x2off));
\r
758 if (setjmp(buffer) !=-2) module[modulenumber]();
\r
764 type F: function(n:integer): integer;
\r
766 unit f : function(n:integer):F;
\r
779 if n=0 then result=h else result:=g fi;
\r
782 var x,y :F; n:integer;
\r
786 write("n="); readln(n); writeln(x(n));
\r
787 write("m="); readln(n); writeln(y(n));
\r
792 #include "rsdata.h"
\r
796 extern int IC; /* global control */
\r
797 extern int modulenumber; /* module number */
\r
798 extern unsigned int *DISPLAY,*DISPDIR; /* displays' addresses */
\r
799 extern unsigned int *lastcor,*mycoroutine,*myprocess;
\r
800 extern unsigned int *current,*local,*global;
\r
810 int protnum=numprot;
\r
813 int perm [] = { 0,1,2};
\r
814 int perminv [] = { 0,1,2};
\r
816 struct Prototype PROT [] =
\r
818 kind num lspn rspan ref dcl lev lst pmdd Sl DL Lsc Stat hand pref pslen */
\r
820 {2, 0, 15, 27, 0, -1, 0, 0, 0, 27, 26, 25, 24, -1, -1, 1},
\r
821 {1, 1, 0, 9, 1, 0, 1, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
822 {1, 2, 0, 9, 2, 1, 2, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
823 {1, 3, 0, 9, 2, 1, 2, 0, 0, 9, 8, 7, 6, -1, -1, 1}
\r
827 int (* module [numprot]) () ;
\r
830 struct Offsets OFF[]=
\r
831 { 0, 43, 0, 11, 0, 0, 0,
\r
832 0, 10, 1, 3, 0, 11, 0,
\r
833 0, 10, 2, 2, 0, 14, 0,
\r
855 struct Hlstelem HL[]= { 0 };
\r
856 struct Sgelem SL[]= { 0 };
\r
862 { case 1: goto L1; break;
\r
863 case 2: goto L2; break;
\r
864 case 3: goto L3; break;
\r
865 case 4: goto L4; break;
\r
866 case 5: goto L5; break;
\r
869 L1: Dopen(1,0,Global(16));
\r
870 *(Physical(Global(16))+1)= 0;
\r
871 IC=2;Go(Global(16));
\r
872 L2: Procclosmove(Global(7), Physical(Global(16))+2);
\r
874 Dopen(1,0,Global(16));
\r
875 *(Physical(Global(16))+1)= 1;
\r
876 IC=3;Go(Global(16));
\r
877 L3: Procclosmove(Global(9), Physical(Global(16))+2);
\r
880 scanf("%d",Global(6));
\r
881 Slopen(*Global(8),Global(16),Global(7));
\r
882 *(Physical(Global(16))+1)= *Global(6);
\r
883 IC=4;Go(Global(16));
\r
884 L4: printf("%d\n",*(Physical(Global(16))+2));
\r
887 scanf("%d",Global(6));
\r
888 Slopen(*Global(10),Global(16),Global(9));
\r
889 *(Physical(Global(16))+1)= *Global(6);
\r
890 IC=5;Go(Global(16));
\r
891 L5: printf("%d\n",*(Physical(Global(16))+2));
\r
899 if ( *Local(1) == 0)
\r
901 *Local(2) = *current;
\r
906 *Local(2) = *current;
\r
916 *Local(2) = *Local(1) * 2;
\r
922 *Local(2) = *Local(1) +2;
\r
930 module[0]=procclostest;
\r
936 if (setjmp(buffer)!=-2) module[modulenumber]();
\r
940 program MEMORYTEST;
\r
941 var i,j,k,n: integer,
\r
968 #include "rsdata.h"
\r
971 extern int IC; /* global control */
\r
972 extern int modulenumber; /* module number */
\r
973 extern unsigned int *DISPVIRT,*DISPDIR; /* displays' addresses */
\r
974 extern unsigned int *lastcor,*mycoroutine,*myprocess;
\r
975 extern unsigned int *current,*local,*global;
\r
987 int protnum=numprot;
\r
990 int perm [] = { 0,0,1};
\r
991 int perminv [] = { 0,0,1};
\r
993 struct Prototype PROT[]=
\r
996 kind num lspn rspan ref dcl lev lst pmdd Sl DL Lsc Stat hand pref pslen */
\r
998 {2, 0, 0, 27, 0, -1, 0, 0, 0, 27, 26, 25, 24, -1, -1, 1},
\r
999 {0, 1, 0, 9, 1, 0, 1, 0, 1, 9, 8, 7, 6, -1, -1, 1},
\r
1004 int (* module [numprot]) () ;
\r
1007 struct Offsets OFF[]=
\r
1008 { 0, 30, 0, 8, 0, 0, 0,
\r
1009 0, 12, 1, 3, 0, 8, 0 };
\r
1025 struct Hlstelem HL[]= { 0 };
\r
1026 struct Sgelem SL[]= { 0 };
\r
1033 { case 1: goto L1; break;
\r
1034 case 2: goto L2; break;
\r
1038 printf("\n n="); scanf("%d",Global(4));
\r
1039 printf("\n k="); scanf("%d",Global(3));
\r
1042 { if (*Global(2) > *Global(4)) break;
\r
1043 Dopen(1,0,Global(5)); IC=2;
\r
1045 L2: (*Global(1))++;
\r
1046 if (*Global(1)== *Global(3))
\r
1048 Refmove(Global(9),Physical(Global(7))+1);
\r
1053 Refmove(Global(7),Global(5));
\r
1061 Openarray(2,1,*Global(2),Local(1));
\r
1071 if (setjmp(buffer)!=-2) module[modulenumber]();
\r
1079 var left,right : node,
\r
1082 unit ins: procedure( value: integer) ;
\r
1091 call left.ins(value);
\r
1099 call right.ins(value)
\r
1106 unit traverse : coroutine (x:node);
\r
1109 unit t: procedure(y:node);
\r
1125 var n,i,j,min,m,k: integer,
\r
1127 tr: arrayof traverse;
\r
1133 read(j); write(j); if j>m then m:=j fi;
\r
1138 if j=-1 then writeln; exit fi;
\r
1140 if j>m then m:=j fi;
\r
1145 array tr dim (1:n);
\r
1149 tr(i):=new traverse(d(i));
\r
1154 if min=m then exit fi;
\r
1159 if min > tr(i).val then min:=tr(i).val; j:=i fi;
\r
1163 write(min); attach(tr(j));
\r
1164 k:=k+1; if k=10 then writeln; k:=0 fi;
\r
1173 #include "rsdata.h"
\r
1176 extern int IC; /* global control */
\r
1177 extern int modulenumber; /* module number */
\r
1178 extern unsigned int *DISPVIRT,*DISPDIR; /* displays' addresses */
\r
1179 extern unsigned int *lastcor,*mycoroutine,*myprocess;
\r
1180 extern unsigned int *current,*local,*global;
\r
1185 int displdir = -15;
\r
1189 int protnum=numprot;
\r
1193 int perm [] = { 0,1,2};
\r
1194 int perminv [] = { 0,1,2};
\r
1196 struct Prototype PROT [] =
\r
1198 kind num lspn rspan ref dcl lev lst pmdd Sl DL Lsc Stat hand pref psleng*/
\r
1200 {2, 0, 15, 27, 0, -1, 0, 0, 0, 27, 26, 25, 24, -1, -1, 1},
\r
1201 {0, 1, 0, 9, 1, 0, 1, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
1202 {1, 2, 0, 9, 2, 1, 2, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
1203 {3, 3, 0, 9, 3, 0, 1, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
1204 {1, 4, 0, 9, 4, 3, 2, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
1209 int (* module [numprot]) () ;
\r
1212 struct Offsets OFF[]=
\r
1213 { 0, 43, 0, 11, 0, 0, 0,
\r
1214 0, 10, 1, 2, 0, 11, 0,
\r
1215 0, 10, 2, 3, 0, 13, 0,
\r
1216 0, 10, 3, 4, 0, 16, 0,
\r
1217 0, 10, 4, 4, 0, 20, 0 };
\r
1244 struct Hlstelem HL[]= { 0 };
\r
1245 struct Sgelem SL[]= { 0 };
\r
1258 case 1: goto L1; break;
\r
1259 case 2: goto L2; break;
\r
1260 case 3: goto L3; break;
\r
1261 case 4: goto L4; break;
\r
1262 case 5: goto L5; break;
\r
1266 if (*Address(1,5) > *Local(1))
\r
1268 if (Notmember(Address(1,1)))
\r
1270 Dopen(1,0,Address(1,1));
\r
1271 IC=2; Go(Address(1,1));
\r
1273 *(Physical(Address(1,1))+5)= *Local(1);
\r
1277 Slopen(2,Local(2),Address(1,1));
\r
1278 *(Physical(Local(2))+1)= *Local(1);
\r
1279 IC=3; Go(Local(2));
\r
1285 if (Notmember(Address(1,3)))
\r
1287 Dopen(1,0,Address(1,3));
\r
1288 IC=4; Go(Address(1,3));
\r
1289 L4: *(Physical(Address(1,3))+5)= *Local(1);
\r
1293 Slopen(2,Local(2),Address(1,3));
\r
1294 *(Physical(Local(2))+1)= *Local(1);
\r
1295 IC=5; Go(Local(2));
\r
1308 case 1: goto L1; break;
\r
1309 case 2: goto L2; break;
\r
1310 case 3: goto L3; break;
\r
1311 case 4: goto L4; break;
\r
1315 L2: Dopen(4,3,Local(4));
\r
1316 Refmove(Physical(Local(4))+1,Local(1));
\r
1317 IC=3; Go(Local(4));
\r
1319 *Local(3)= *Global(5);
\r
1320 IC=4; Attach(lastcor);
\r
1327 case 1: goto L1; break;
\r
1328 case 2: goto L2; break;
\r
1329 case 3: goto L3; break;
\r
1330 case 4: goto L4; break;
\r
1333 if (Member(Local(1)))
\r
1334 { Dopen(4,3,Local(3));
\r
1335 Refmove(Physical(Local(3))+1,Physical(Local(1))+1);
\r
1336 IC=2; Go(Local(3));
\r
1338 *Address(1,3)= *(Physical(Local(1))+5);
\r
1339 IC=3; Attach(lastcor);
\r
1340 L3: Dopen(4,3,Local(3));
\r
1341 Refmove(Physical(Local(3))+1,Physical(Local(1))+3);
\r
1342 IC=4; Go(Local(3));
\r
1352 case 1: goto L1; break;
\r
1353 case 2: goto L2; break;
\r
1354 case 3: goto L3; break;
\r
1355 case 4: goto L4; break;
\r
1356 case 5: goto L5; break;
\r
1357 case 6: goto L6; break;
\r
1360 printf("Number of trees n="); scanf("%d",Global(1));
\r
1361 Openarray(5,1,*Global(1),Global(7));
\r
1362 printf("Give the values of nodes. End each tree with -1\n");
\r
1366 if (*Global(2)> *Global(1)) break;
\r
1367 scanf("%d",Global(3));
\r
1368 if (*Global(3) > *Global(5)) *Global(5)= *Global(3);
\r
1369 Dopen(1,0,Arrayelem(Global(7),*Global(2)));
\r
1370 IC=2; Go(Arrayelem(Global(7),*Global(2)));
\r
1371 L2: *(Physical(Arrayelem(Global(7),*Global(2)))+5)= *Global(3);
\r
1374 scanf("%d",Global(3));
\r
1375 if (*Global(3) == -1) break;
\r
1376 if (*Global(3) > *Global(5)) *Global(5)= *Global(3);
\r
1377 Slopen(2,Global(16),Arrayelem(Global(7),*Global(2)));
\r
1378 *(Physical(Global(16))+1)= *Global(3);
\r
1379 IC=3; Go(Global(16));
\r
1385 Openarray(5,1,*Global(1),Global(9));
\r
1389 { if (*Global(2) > *Global(1)) break;
\r
1390 Dopen(3,0,Arrayelem(Global(9),*Global(2)));
\r
1391 Refmove(Physical(Arrayelem(Global(9),*Global(2)))+1,
\r
1392 Arrayelem(Global(7),*Global(2)));
\r
1393 IC=4; Go(Arrayelem(Global(9),*Global(2)));
\r
1394 L4: IC=5; Attach(Arrayelem(Global(9),*Global(2)));
\r
1395 L5: (*Global(2))++;
\r
1400 if (*Global(4) == *Global(5) ) break;
\r
1401 *Global(4)= *(Physical(Arrayelem(Global(9),1))+3);
\r
1406 if (*Global(2) > *Global(1)) break;
\r
1407 if (*Global(4) > *(Physical(Arrayelem(Global(9),*Global(2)))+3))
\r
1408 { *Global(4) = *(Physical(Arrayelem(Global(9),*Global(2)))+3);
\r
1409 *Global(3)= *Global(2);
\r
1413 if (*Global(4) < *Global(5))
\r
1415 printf("%d ",*Global(4));
\r
1416 IC=6; Attach(Arrayelem(Global(9),*Global(3)));
\r
1417 L6: (*Global(6))++;
\r
1418 if (*Global(6)==10) { printf(" \n"); *Global(6)=0; };
\r
1422 Attach(Arrayelem(Global(9),*Global(3)));
\r
1432 module[3]=traverse;
\r
1435 if (setjmp(buffer)!=-2) module[modulenumber]();
\r
1442 var left,right : node,
\r
1445 unit ins: procedure( value: integer) ;
\r
1454 call left.ins(value);
\r
1462 call right.ins(value)
\r
1469 unit traverse : coroutine (x:node);
\r
1472 unit t: procedure(y:node);
\r
1489 unit killtree: procedure (x:node);
\r
1494 killtree(x.right);
\r
1499 unit clear:procedure ;
\r
1502 for i:=1 to n do call killtree(d(i)); od;
\r
1503 for i:=1 to n do kill(tr(i)); od;
\r
1508 var n,i,j,min,m,k: integer,
\r
1510 tr: arrayof traverse;
\r
1516 read(j); write(j); if j>m then m:=j fi;
\r
1521 if j=-1 then writeln; exit fi;
\r
1523 if j>m then m:=j fi;
\r
1528 array tr dim (1:n);
\r
1532 tr(i):=new traverse(d(i));
\r
1537 if min=m then exit fi;
\r
1542 if min > tr(i).val then min:=tr(i).val; j:=i fi;
\r
1546 write(min); attach(tr(j));
\r
1547 k:=k+1; if k=10 then writeln; k:=0 fi;
\r
1558 #include "rsdata.h"
\r
1560 extern int IC; /* global control */
\r
1561 extern int modulenumber; /* module number */
\r
1562 extern unsigned int *DISVIRT,*DISPDIR; /* displays' addresses */
\r
1563 extern unsigned int *lastcor,*mycoroutine,*myprocess;
\r
1564 extern unsigned int *current,*local,*global;
\r
1569 int displdir = -15;
\r
1573 int protnum=numprot;
\r
1577 int perm [] = { 0,1,2};
\r
1578 int perminv [] = { 0,1,2};
\r
1580 struct Prototype PROT [] =
\r
1582 kind num lspn rspan ref dcl lev lst pmdd Sl DL Lsc Stat hand pref psleng*/
\r
1584 {2, 0, 15, 27, 0, -1, 0, 0, 0, 27, 26, 25, 24, -1, -1, 1},
\r
1585 {0, 1, 0, 9, 1, 0, 1, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
1586 {1, 2, 0, 9, 2, 1, 2, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
1587 {3, 3, 0, 9, 3, 0, 1, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
1588 {1, 4, 0, 9, 4, 3, 2, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
1590 {1, 6, 0, 9, 2, 0, 1, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
1591 {1, 7, 0, 9, 4, 0, 1, 0, 0, 9, 8, 7, 6, -1, -1, 1}
\r
1595 int (* module [numprot]) () ;
\r
1598 struct Offsets OFF[]=
\r
1599 { 0, 43, 0, 11, 0, 0, 0,
\r
1600 0, 10, 1, 2, 0, 11, 0,
\r
1601 0, 10, 2, 3, 0, 13, 0,
\r
1602 0, 10, 3, 4, 0, 16, 0,
\r
1603 0, 10, 4, 4, 0, 20, 0 };
\r
1630 struct Hlstelem HL[]= { 0 };
\r
1631 struct Sgelem SL[]= { 0 };
\r
1644 case 1: goto L1; break;
\r
1645 case 2: goto L2; break;
\r
1646 case 3: goto L3; break;
\r
1647 case 4: goto L4; break;
\r
1648 case 5: goto L5; break;
\r
1652 if (*Address(1,5) > *Local(1))
\r
1654 if (Notmember(Address(1,1)))
\r
1656 Dopen(1,0,Address(1,1));
\r
1657 IC=2; Go(Address(1,1));
\r
1659 *(Physical(Address(1,1))+5)= *Local(1);
\r
1663 Slopen(2,Local(2),Address(1,1));
\r
1664 *(Physical(Local(2))+1)= *Local(1);
\r
1665 IC=3; Go(Local(2));
\r
1671 if (Notmember(Address(1,3)))
\r
1673 Dopen(1,0,Address(1,3));
\r
1674 IC=4; Go(Address(1,3));
\r
1675 L4: *(Physical(Address(1,3))+5)= *Local(1);
\r
1679 Slopen(2,Local(2),Address(1,3));
\r
1680 *(Physical(Local(2))+1)= *Local(1);
\r
1681 IC=5; Go(Local(2));
\r
1694 case 1: goto L1; break;
\r
1695 case 2: goto L2; break;
\r
1696 case 3: goto L3; break;
\r
1697 case 4: goto L4; break;
\r
1701 L2: Dopen(4,3,Local(4));
\r
1702 Refmove(Physical(Local(4))+1,Local(1));
\r
1703 IC=3; Go(Local(4));
\r
1705 *Local(3)= *Global(5);
\r
1706 IC=4; Attach(lastcor);
\r
1713 case 1: goto L1; break;
\r
1714 case 2: goto L2; break;
\r
1715 case 3: goto L3; break;
\r
1716 case 4: goto L4; break;
\r
1719 if (Member(Local(1)))
\r
1720 { Dopen(4,3,Local(3));
\r
1721 Refmove(Physical(Local(3))+1,Physical(Local(1))+1);
\r
1722 IC=2; Go(Local(3));
\r
1724 *Address(1,3)= *(Physical(Local(1))+5);
\r
1725 IC=3; Attach(lastcor);
\r
1726 L3: Dopen(4,3,Local(3));
\r
1727 Refmove(Physical(Local(3))+1,Physical(Local(1))+3);
\r
1728 IC=4; Go(Local(3));
\r
1739 case 1: goto L1; break;
\r
1740 case 2: goto L2; break;
\r
1745 if (*Local(1)> *Global(1)) break;
\r
1746 Dopen(7,0,Local(2));
\r
1747 Refmove(Physical(Local(2))+1,Arrayelem(Global(7),*Local(1)));
\r
1748 IC=2; Go(Local(2));
\r
1756 if (*Local(1)> *Global(1)) break;
\r
1757 Gkill(Arrayelem(Global(9),*Local(1)));
\r
1770 case 1: goto L1; break;
\r
1771 case 2: goto L2; break;
\r
1772 case 3: goto L3; break;
\r
1774 L1:if (Member(Local(1)))
\r
1776 Dopen(7,0,Local(3));
\r
1777 Refmove(Physical(Local(3))+1,Physical(Local(1))+1);
\r
1778 IC=2; Go(Local(3));
\r
1780 Dopen(7,0,Local(3));
\r
1781 Refmove(Physical(Local(3))+1,Physical(Local(1))+3);
\r
1782 IC=3; Go(Local(3));
\r
1794 case 1: goto L1; break;
\r
1795 case 2: goto L2; break;
\r
1796 case 3: goto L3; break;
\r
1797 case 4: goto L4; break;
\r
1798 case 5: goto L5; break;
\r
1799 case 6: goto L6; break;
\r
1800 case 7: goto L7; break;
\r
1803 printf("Number of trees n="); scanf("%d",Global(1));
\r
1804 Openarray(5,1,*Global(1),Global(7));
\r
1805 printf("Give the values of nodes. End each tree with -1\n");
\r
1809 if (*Global(2)> *Global(1)) break;
\r
1810 scanf("%d",Global(3));
\r
1811 if (*Global(3) > *Global(5)) *Global(5)= *Global(3);
\r
1812 Dopen(1,0,Arrayelem(Global(7),*Global(2)));
\r
1813 IC=2; Go(Arrayelem(Global(7),*Global(2)));
\r
1814 L2: *(Physical(Arrayelem(Global(7),*Global(2)))+5)= *Global(3);
\r
1817 scanf("%d",Global(3));
\r
1818 if (*Global(3) == -1) break;
\r
1819 if (*Global(3) > *Global(5)) *Global(5)= *Global(3);
\r
1820 Slopen(2,Global(16),Arrayelem(Global(7),*Global(2)));
\r
1821 *(Physical(Global(16))+1)= *Global(3);
\r
1822 IC=3; Go(Global(16));
\r
1828 Openarray(5,1,*Global(1),Global(9));
\r
1832 { if (*Global(2) > *Global(1)) break;
\r
1833 Dopen(3,0,Arrayelem(Global(9),*Global(2)));
\r
1834 Refmove(Physical(Arrayelem(Global(9),*Global(2)))+1,
\r
1835 Arrayelem(Global(7),*Global(2)));
\r
1836 IC=4; Go(Arrayelem(Global(9),*Global(2)));
\r
1837 L4: IC=5; Attach(Arrayelem(Global(9),*Global(2)));
\r
1838 L5: (*Global(2))++;
\r
1843 if (*Global(4) == *Global(5) ) break;
\r
1844 *Global(4)= *(Physical(Arrayelem(Global(9),1))+3);
\r
1849 if (*Global(2) > *Global(1)) break;
\r
1850 if (*Global(4) > *(Physical(Arrayelem(Global(9),*Global(2)))+3))
\r
1851 { *Global(4) = *(Physical(Arrayelem(Global(9),*Global(2)))+3);
\r
1852 *Global(3)= *Global(2);
\r
1856 if (*Global(4) < *Global(5))
\r
1858 printf("%d ",*Global(4));
\r
1859 IC=6; Attach(Arrayelem(Global(9),*Global(3)));
\r
1860 L6: (*Global(6))++;
\r
1861 if (*Global(6)==10) { printf(" \n"); *Global(6)=0; };
\r
1865 Dopen(6,0,Global(16));
\r
1866 IC=7; Go(Global(16));
\r
1878 module[3]=traverse;
\r
1881 module[7]=killtree;
\r
1883 if (setjmp(buffer)!=-2) module[modulenumber]();
\r
1889 var left,right : node,
\r
1892 unit ins: procedure( value: integer) ;
\r
1901 call left.ins(value);
\r
1909 call right.ins(value)
\r
1916 unit traverse : coroutine (x:node);
\r
1919 unit t: procedure(y:node);
\r
1935 var n,i,j,min,m,k: integer,
\r
1937 tr: arrayof traverse;
\r
1943 read(j); write(j); if j>m then m:=j fi;
\r
1948 if j=-1 then writeln; exit fi;
\r
1950 if j>m then m:=j fi;
\r
1955 array tr dim (1:n);
\r
1959 tr(i):=new traverse(d(i));
\r
1964 if min=m then exit fi;
\r
1969 if min > tr(i).val then min:=tr(i).val; j:=i fi;
\r
1973 write(min); attach(tr(j));
\r
1974 k:=k+1; if k=10 then writeln; k:=0 fi;
\r
1984 #include "rsdata.h"
\r
1987 extern int IC; /* global control */
\r
1988 extern int modulenumber; /* module number */
\r
1989 extern unsigned int *DISVIRT,*DISPDIR; /* displays' addresses */
\r
1990 extern unsigned int *lastcor,*mycoroutine,*myprocess;
\r
1991 extern unsigned int *current,*local,*global;
\r
1996 int displdir = -15;
\r
2000 int protnum=numprot;
\r
2004 int perm [] = { 0,1,2};
\r
2005 int perminv [] = { 0,1,2};
\r
2007 struct Prototype PROT [] =
\r
2009 kind num lspn rspan ref dcl lev lst pmdd Sl DL Lsc Stat hand pref psleng*/
\r
2011 {2, 0, 15, 27, 0, -1, 0, 0, 0, 27, 26, 25, 24, -1, -1, 1},
\r
2012 {0, 1, 0, 9, 1, 0, 1, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
2013 {1, 2, 0, 9, 2, 1, 2, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
2014 {3, 3, 0, 9, 3, 0, 1, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
2015 {1, 4, 0, 9, 4, 3, 2, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
2020 int (* module [numprot]) () ;
\r
2023 struct Offsets OFF[]=
\r
2024 { 0, 43, 0, 11, 0, 0, 0,
\r
2025 0, 10, 1, 2, 0, 11, 0,
\r
2026 0, 10, 2, 3, 0, 13, 0,
\r
2027 0, 10, 3, 4, 0, 16, 0,
\r
2028 0, 10, 4, 4, 0, 20, 0 };
\r
2055 struct Hlstelem HL[]= { 0 };
\r
2056 struct Sgelem SL[]= { 0 };
\r
2069 case 1: goto L1; break;
\r
2070 case 2: goto L2; break;
\r
2071 case 3: goto L3; break;
\r
2072 case 4: goto L4; break;
\r
2073 case 5: goto L5; break;
\r
2077 if (*Address(1,5) > *Local(1))
\r
2079 if (Notmember(Address(1,1)))
\r
2081 Dopen(1,0,Address(1,1));
\r
2082 IC=2; Go(Address(1,1));
\r
2084 *(Physical(Address(1,1))+5)= *Local(1);
\r
2088 Slopen(2,Local(2),Address(1,1));
\r
2089 *(Physical(Local(2))+1)= *Local(1);
\r
2090 IC=3; Go(Local(2));
\r
2096 if (Notmember(Address(1,3)))
\r
2098 Dopen(1,0,Address(1,3));
\r
2099 IC=4; Go(Address(1,3));
\r
2100 L4: *(Physical(Address(1,3))+5)= *Local(1);
\r
2104 Slopen(2,Local(2),Address(1,3));
\r
2105 *(Physical(Local(2))+1)= *Local(1);
\r
2106 IC=5; Go(Local(2));
\r
2119 case 1: goto L1; break;
\r
2120 case 2: goto L2; break;
\r
2121 case 3: goto L3; break;
\r
2122 case 4: goto L4; break;
\r
2126 L2: Dopen(4,3,Local(4));
\r
2127 Refmove(Physical(Local(4))+1,Local(1));
\r
2128 IC=3; Go(Local(4));
\r
2130 *Local(3)= *Global(5);
\r
2131 IC=4; Attach(lastcor);
\r
2138 case 1: goto L1; break;
\r
2139 case 2: goto L2; break;
\r
2140 case 3: goto L3; break;
\r
2141 case 4: goto L4; break;
\r
2144 if (Member(Local(1)))
\r
2145 { Dopen(4,3,Local(3));
\r
2146 Refmove(Physical(Local(3))+1,Physical(Local(1))+1);
\r
2147 IC=2; Go(Local(3));
\r
2149 *Address(1,3)= *(Physical(Local(1))+5);
\r
2150 IC=3; Attach(lastcor);
\r
2151 L3: Dopen(4,3,Local(3));
\r
2152 Refmove(Physical(Local(3))+1,Physical(Local(1))+3);
\r
2153 IC=4; Go(Local(3));
\r
2163 case 1: goto L1; break;
\r
2164 case 2: goto L2; break;
\r
2165 case 3: goto L3; break;
\r
2166 case 4: goto L4; break;
\r
2167 case 5: goto L5; break;
\r
2168 case 6: goto L6; break;
\r
2171 printf("Number of trees n="); scanf("%d",Global(1));
\r
2172 Openarray(5,1,*Global(1),Global(7));
\r
2173 printf("Give the values of nodes. End each tree with -1\n");
\r
2177 if (*Global(2)> *Global(1)) break;
\r
2178 scanf("%d",Global(3));
\r
2179 if (*Global(3) > *Global(5)) *Global(5)= *Global(3);
\r
2180 Dopen(1,0,Arrayelem(Global(7),*Global(2)));
\r
2181 IC=2; Go(Arrayelem(Global(7),*Global(2)));
\r
2182 L2: *(Physical(Arrayelem(Global(7),*Global(2)))+5)= *Global(3);
\r
2185 scanf("%d",Global(3));
\r
2186 if (*Global(3) == -1) break;
\r
2187 if (*Global(3) > *Global(5)) *Global(5)= *Global(3);
\r
2188 Slopen(2,Global(16),Arrayelem(Global(7),*Global(2)));
\r
2189 *(Physical(Global(16))+1)= *Global(3);
\r
2190 IC=3; Go(Global(16));
\r
2196 Openarray(5,1,*Global(1),Global(9));
\r
2200 { if (*Global(2) > *Global(1)) break;
\r
2201 Dopen(3,0,Arrayelem(Global(9),*Global(2)));
\r
2202 Refmove(Physical(Arrayelem(Global(9),*Global(2)))+1,
\r
2203 Arrayelem(Global(7),*Global(2)));
\r
2204 IC=4; Go(Arrayelem(Global(9),*Global(2)));
\r
2205 L4: IC=5; Attach(Arrayelem(Global(9),*Global(2)));
\r
2206 L5: (*Global(2))++;
\r
2211 if (*Global(4) == *Global(5) ) break;
\r
2212 *Global(4)= *(Physical(Arrayelem(Global(9),1))+3);
\r
2217 if (*Global(2) > *Global(1)) break;
\r
2218 if (*Global(4) > *(Physical(Arrayelem(Global(9),*Global(2)))+3))
\r
2219 { *Global(4) = *(Physical(Arrayelem(Global(9),*Global(2)))+3);
\r
2220 *Global(3)= *Global(2);
\r
2224 if (*Global(4) < *Global(5))
\r
2226 printf("%d ",*Global(4));
\r
2227 IC=6; Attach(Arrayelem(Global(9),*Global(3)));
\r
2228 L6: (*Global(6))++;
\r
2229 if (*Global(6)==10) { printf(" \n"); *Global(6)=0; };
\r
2241 module[3]=traverse;
\r
2245 if (setjmp(buffer)!=-2) module[modulenumber]();
\r
2249 #include "rsdata.h"
\r
2253 extern int IC; /* global control */
\r
2254 extern int modulenumber; /* module number */
\r
2255 extern unsigned int *DISPLAY,*DISPDIR; /* displays' addresses */
\r
2256 extern unsigned int *lastcor,*mycoroutine,*myprocess;
\r
2257 extern unsigned int *current,*local,*global;
\r
2263 int displdir = 20;
\r
2267 int protnum=numprot;
\r
2270 int perm [] = { 0,1,0,2,1,3};
\r
2271 int perminv [] = { 0,1,0,2,1,3};
\r
2273 struct Prototype PROT [] =
\r
2275 kind num lspn rspan ref dcl lev lst pmdd Sl DL Lsc Stat hand pref pslen */
\r
2277 {2, 0, 15, 27, 0, -1, 0, 0, 0, 27, 26, 25, 24, -1, -1, 1},
\r
2278 {0, 1, 0, 9, 1, 0, 1, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
2279 {1, 2, 0, 9, 1, 0, 1, 0, 0, 9, 8, 7, 6, -1, -1, 1},
\r
2280 {0, 3, 0, 9, 1, 2, 2, 0, 2, 9, 8, 7, 6, -1, 1, 2},
\r
2281 {1, 4, 0, 9, 1, 3, 3, 0, 2, 9, 8, 7, 6, -1, -1, 1}
\r
2285 int (* module [numprot]) () ;
\r
2288 struct Offsets OFF[]=
\r
2289 { 0, 43, 0, 11, 0, 0, 0,
\r
2290 0, 10, 1, 2, 0, 11, 0,
\r
2291 0, 10, 2, 3, 0, 13, 0,
\r
2292 0, 10, 3, 4, 0, 16, 0,
\r
2293 0, 10, 4, 4, 0, 20, 0 };
\r
2321 struct Hlstelem HL[]= { 0 };
\r
2322 struct Sgelem SL[]= { 0 };
\r
2328 { case 1: goto L1; break;
\r
2329 case 2: goto L2; break;
\r
2330 case 3: goto L3; break;
\r
2332 L1: Dopen(2,0,Global(16));
\r
2333 IC=2;Go(Global(16));
\r
2335 Slopen(4,Global(16),Global(7));
\r
2346 { case 1: goto L1; break;
\r
2347 case 2: goto L2; break;
\r
2357 { case 1: goto L1; break;
\r
2358 case 2: goto L2; break;
\r
2361 L1: Dopen(3,2,Global(7));
\r
2362 IC=2; Go(Global(7));
\r
2370 longjmp(buffer,-1);
\r
2374 { (* Address(2,1))++;
\r
2375 printf("i=%d\n", *Address(2,1));
\r
2391 if (setjmp(buffer)!=-2) module[modulenumber]();
\r