00000000: 50 52 4F 47 52 41 4D 0D 20 20 20 20 20 20 20 20 |PROGRAM. |
00000010: 63 61 6E 74 6F 72 3B 0D 43 4F 4E 53 54 0D 20 20 |cantor;.CONST. |
00000020: 20 20 20 20 66 6D 61 78 3D 20 31 36 3B 0D 20 20 | fmax= 16;. |
00000030: 20 20 20 20 67 6D 61 78 3D 20 38 3B 0D 54 59 50 | gmax= 8;.TYP|
00000040: 45 0D 20 20 20 20 20 74 61 62 65 6C 3D 20 41 52 |E. tabel= AR|
00000050: 52 41 59 20 5B 31 2E 2E 66 6D 61 78 5D 20 4F 46 |RAY [1..fmax] OF|
00000060: 0D 20 20 20 20 20 20 20 20 20 20 20 20 52 45 43 |. REC|
00000070: 4F 52 44 0D 20 20 20 20 20 20 20 20 20 20 20 20 |ORD. |
00000080: 20 20 64 72 61 61 69 3A 20 69 6E 74 65 67 65 72 | draai: integer|
00000090: 3B 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |;. |
000000A0: 20 20 70 65 6E 3A 20 62 6F 6F 6C 65 61 6E 3B 0D | pen: boolean;.|
000000B0: 20 20 20 20 20 20 20 20 20 20 20 20 45 4E 44 3B | END;|
000000C0: 0D 20 20 20 20 20 20 6C 79 73 74 3D 20 41 52 52 |. lyst= ARR|
000000D0: 41 59 20 5B 31 2E 2E 67 6D 61 78 5D 0D 20 20 20 |AY [1..gmax]. |
000000E0: 20 20 20 20 20 20 20 20 20 4F 46 A0 69 6E 74 65 | OF.inte|
000000F0: 67 65 72 3B 0D 56 41 52 0D 20 20 20 20 20 20 61 |ger;.VAR. a|
00000100: 6E 73 77 65 72 3A 20 63 68 61 72 3B 0D 20 20 20 |nswer: char;. |
00000110: 20 20 20 20 20 61 6C 66 61 3A 20 69 6E 74 65 67 | alfa: integ|
00000120: 65 72 3B 0D 20 20 20 20 20 20 20 6C 2C 78 2C 79 |er;. l,x,y|
00000130: 3A 20 69 6E 74 65 67 65 72 3B 0D 20 20 20 20 20 |: integer;. |
00000140: 6E 67 2C 6F 72 64 65 3A 20 69 6E 74 65 67 65 72 |ng,orde: integer|
00000150: 3B 0D 20 20 20 20 20 20 20 78 30 2C 79 30 3A 20 |;. x0,y0: |
00000160: 69 6E 74 65 67 65 72 3B 0D 20 20 20 20 20 20 20 |integer;. |
00000170: 72 65 65 6B 73 3A 20 41 52 52 41 59 20 5B 31 2E |reeks: ARRAY [1.|
00000180: 2E 67 6D 61 78 5D 0D 20 20 20 20 20 20 20 20 20 |.gmax]. |
00000190: 20 20 20 20 20 4F 46 20 74 61 62 65 6C 3B 0D 20 | OF tabel;. |
000001A0: 20 20 6E 66 2C 67 65 6E A4 72 79 3A 20 6C 79 73 | nf,gen.ry: lys|
000001B0: 74 3B 0D 20 20 20 20 20 20 20 70 6F 77 65 72 3A |t;. power:|
000001C0: 20 6C 79 73 74 3B 0D 20 20 20 20 20 20 20 20 20 | lyst;. |
000001D0: 20 20 65 3A 20 41 52 52 41 59 20 5B 30 2E 2E 33 | e: ARRAY [0..3|
000001E0: 5D 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |]. |
000001F0: 4F 46 20 52 45 43 4F 52 44 0D 20 20 20 20 20 20 |OF RECORD. |
00000200: 20 20 20 20 20 20 20 20 20 20 78 2C 79 3A 20 69 | x,y: i|
00000210: 6E 74 65 67 65 72 3B 0D 20 20 20 20 20 20 20 20 |nteger;. |
00000220: 20 20 20 20 20 20 45 4E 44 3B 0D 23 61 72 74 2E | END;.#art.|
00000230: 6C 69 62 0D 50 52 4F 43 45 44 55 52 45 0D 20 20 |lib.PROCEDURE. |
00000240: 20 20 20 20 20 20 20 20 70 72 69 6D 69 74 69 65 | primitie|
00000250: 76 65 6E 3B 0D 56 41 52 0D 20 20 20 20 20 20 69 |ven;.VAR. i|
00000260: 2C 6A 3A 20 69 6E 74 65 67 65 72 3B 0D 42 45 47 |,j: integer;.BEG|
00000270: 49 4E 0D 20 20 65 5B 30 5D 2E 78 3A 3D 31 3B 20 |IN. e[0].x:=1; |
00000280: 65 5B 30 5D 2E 79 3A 3D 30 3B 0D 20 20 46 4F 52 |e[0].y:=0;. FOR|
00000290: 20 69 3A 3D 31 20 54 4F 20 33 20 44 4F 20 42 45 | i:=1 TO 3 DO BE|
000002A0: 47 49 4E 0D 20 20 20 20 6A 3A 3D 69 2D 31 3B 0D |GIN. j:=i-1;.|
000002B0: 20 20 20 20 65 5B 69 5D 2E 78 3A 3D 2B 65 5B 6A | e[i].x:=+e[j|
000002C0: 5D 2E 79 3B 0D 20 20 20 20 65 5B 69 5D 2E 79 3A |].y;. e[i].y:|
000002D0: 3D 2D 65 5B 6A 5D 2E 78 3B 0D 20 20 45 4E 44 0D |=-e[j].x;. END.|
000002E0: 45 4E 44 0D 3B 0D 50 52 4F 43 45 44 55 52 45 0D |END.;.PROCEDURE.|
000002F0: 20 20 20 20 20 20 20 20 20 20 73 65 74 70 65 6E | setpen|
00000300: 20 28 61 2C 62 3A 20 69 6E 74 65 67 65 72 29 3B | (a,b: integer);|
00000310: 0D 42 45 47 49 4E 0D 20 20 78 3A 3D 61 3B 20 79 |.BEGIN. x:=a; y|
00000320: 3A 3D 62 3B 0D 45 4E 44 0D 3B 0D 50 52 4F 43 45 |:=b;.END.;.PROCE|
00000330: 44 55 52 45 0D 20 20 20 20 20 20 20 20 20 20 64 |DURE. d|
00000340: 72 61 77 0D 20 20 20 20 20 20 20 20 20 20 28 6C |raw. (l|
00000350: 2C 61 3A 20 69 6E 74 65 67 65 72 29 3B 0D 56 41 |,a: integer);.VA|
00000360: 52 0D 20 20 20 20 20 20 78 31 2C 79 31 3A 20 69 |R. x1,y1: i|
00000370: 6E 74 65 67 65 72 3B 0D 42 45 47 49 4E 0D 20 20 |nteger;.BEGIN. |
00000380: 61 3A 3D 28 61 2B 34 29 20 4D 4F 44 20 34 3B 0D |a:=(a+4) MOD 4;.|
00000390: 20 20 78 31 3A 3D 78 2B 6C 2A 65 5B 61 5D 2E 78 | x1:=x+l*e[a].x|
000003A0: 3B 0D 20 20 79 31 3A 3D 79 2B 6C 2A 65 5B 61 5D |;. y1:=y+l*e[a]|
000003B0: 2E 79 3B 0D 20 20 70 6C 6F 74 28 32 2C 78 2C 79 |.y;. plot(2,x,y|
000003C0: 2C 78 31 2C 79 31 29 3B 0D 20 20 78 3A 3D 78 31 |,x1,y1);. x:=x1|
000003D0: 3B 0D 20 20 79 3A 3D 79 31 3B 0D 45 4E 44 0D 3B |;. y:=y1;.END.;|
000003E0: 0D 50 52 4F 43 45 44 55 52 45 0D 20 20 20 20 20 |.PROCEDURE. |
000003F0: 20 20 20 20 20 6D 6F 76 65 74 6F 28 6C 2C 6B 3A | moveto(l,k:|
00000400: 20 69 6E 74 65 67 65 72 29 3B 0D 42 45 47 49 4E | integer);.BEGIN|
00000410: 0D 20 20 78 3A 3D 78 2B 6C 2A 65 5B 6B 5D 2E 78 |. x:=x+l*e[k].x|
00000420: 3B 0D 20 20 79 3A 3D 79 2B 6C 2A 65 5B 6B 5D 2E |;. y:=y+l*e[k].|
00000430: 79 3B 0D 45 4E 44 0D 3B 0D 23 70 61 72 61 6D 65 |y;.END.;.#parame|
00000440: 74 65 72 0D 50 52 4F 43 45 44 55 52 45 0D 20 20 |ter.PROCEDURE. |
00000450: 20 20 20 20 20 20 67 65 6E 65 72 61 74 65 28 67 | generate(g|
00000460: 2C 61 6C 66 61 3A 20 69 6E 74 65 67 65 72 29 3B |,alfa: integer);|
00000470: 0D 56 41 52 0D 20 20 20 20 20 20 20 20 66 2C 6B |.VAR. f,k|
00000480: 2C 68 6F 65 6B 3A 20 69 6E 74 65 67 65 72 3B 0D |,hoek: integer;.|
00000490: 20 20 20 20 20 20 20 20 20 20 73 74 61 74 75 73 | status|
000004A0: 3A 20 62 6F 6F 6C 65 61 6E 3B 0D 42 45 47 49 4E |: boolean;.BEGIN|
000004B0: 0D 20 20 49 46 20 28 67 3D 6F 72 64 65 2B 31 29 |. IF (g=orde+1)|
000004C0: 0D 20 20 20 54 48 45 4E 20 64 72 61 77 28 6C 2C |. THEN draw(l,|
000004D0: 61 6C 66 61 29 0D 20 20 20 45 4C 53 45 20 42 45 |alfa). ELSE BE|
000004E0: 47 49 4E 0D 20 20 20 20 6B 3A 3D 67 65 6E A4 72 |GIN. k:=gen.r|
000004F0: 79 5B 67 5D 3B 0D 20 20 20 20 20 49 46 20 28 6B |y[g];. IF (k|
00000500: 3D 30 29 20 54 48 45 4E 0D 20 20 20 20 20 20 20 |=0) THEN. |
00000510: 20 6B 3A 3D 32 2B 72 61 6E 64 6F 6D 20 4D 4F 44 | k:=2+random MOD|
00000520: 20 28 6E 67 2D 31 29 3B 0D 20 20 20 20 46 4F 52 | (ng-1);. FOR|
00000530: 20 66 3A 3D 31 20 54 4F 20 6E 66 5B 6B 5D 20 44 | f:=1 TO nf[k] D|
00000540: 4F 20 42 45 47 49 4E 0D 20 20 20 20 20 68 6F 65 |O BEGIN. hoe|
00000550: 6B 3A 3D 72 65 65 6B 73 5B 6B 5D 5B 66 5D 2E 64 |k:=reeks[k][f].d|
00000560: 72 61 61 69 3B 0D 20 20 20 20 20 73 74 61 74 75 |raai;. statu|
00000570: 73 3A 3D 72 65 65 6B 73 5B 6B 5D 5B 66 5D 2E 70 |s:=reeks[k][f].p|
00000580: 65 6E 3B 0D 20 20 20 20 20 61 6C 66 61 3A 3D 28 |en;. alfa:=(|
00000590: 61 6C 66 61 2B 68 6F 65 6B 29 20 4D 4F 44 20 34 |alfa+hoek) MOD 4|
000005A0: 3B 0D 20 20 20 20 20 49 46 20 73 74 61 74 75 73 |;. IF status|
000005B0: 0D 20 20 20 20 20 20 54 48 45 4E 20 67 65 6E 65 |. THEN gene|
000005C0: 72 61 74 65 28 67 2B 31 2C 61 6C 66 61 29 0D 20 |rate(g+1,alfa). |
000005D0: 20 20 20 20 20 45 4C 53 45 20 6D 6F 76 65 74 6F | ELSE moveto|
000005E0: 28 70 6F 77 65 72 5B 67 5D 2C 61 6C 66 61 29 0D |(power[g],alfa).|
000005F0: 20 20 20 20 45 4E 44 0D 20 20 20 45 4E 44 0D 45 | END. END.E|
00000600: 4E 44 0D 3B 0D 42 45 47 49 4E 20 28 2A 20 69 73 |ND.;.BEGIN (* is|
00000610: 6C 65 73 20 2A 29 0D 20 20 70 72 69 6D 69 74 69 |les *). primiti|
00000620: 65 76 65 6E 3B 0D 20 20 52 45 50 45 41 54 0D 20 |even;. REPEAT. |
00000630: 20 20 20 70 61 72 61 6D 65 74 65 72 73 3B 0D 20 | parameters;. |
00000640: 20 20 20 67 72 61 66 69 6E 69 74 28 30 2C 32 29 | grafinit(0,2)|
00000650: 3B 0D 20 20 20 20 73 65 74 70 65 6E 28 78 30 2C |;. setpen(x0,|
00000660: 79 30 29 3B 0D 20 20 20 20 69 6E 6B 28 37 29 3B |y0);. ink(7);|
00000670: 0D 20 20 20 20 67 65 6E 65 72 61 74 65 28 31 2C |. generate(1,|
00000680: 30 29 3B 0D 20 20 20 20 49 46 20 61 66 64 72 75 |0);. IF afdru|
00000690: 6B 20 54 48 45 4E 20 42 45 47 49 4E 0D 20 20 20 |k THEN BEGIN. |
000006A0: 20 20 20 20 6D 6F 76 65 3B 20 68 61 72 64 63 6F | move; hardco|
000006B0: 70 79 0D 20 20 20 20 45 4E 44 0D 20 20 55 4E 54 |py. END. UNT|
000006C0: 49 4C 20 6B 6C 61 61 72 6F 76 65 72 0D 45 4E 44 |IL klaarover.END|
000006D0: 2E 0D AA |... |
PROGRAM. CANTOR;.CONST. FMAX
= 16;. GMAX= 8;.TYPE. TABEL= AR
RAY [1..FMAX] OF. RECORD.
DRAAI: INTEGER;.
PEN: BOOLEAN;. END;. L
YST= ARRAY [1..GMAX]. OF INTE
GER;.VAR. ANSWER: CHAR;. ALF
A: INTEGER;. L,X,Y: INTEGER;.
NG,ORDE: INTEGER;. X0,Y0: INTEGER;
. REEKS: ARRAY [1..GMAX].
OF TABEL;. NF,GEN.RY: LYST;.
POWER: LYST;. E: ARRAY [0..3
]. OF RECORD.
X,Y: INTEGER;. END;.#ART.
LIB.PROCEDURE. PRIMITIEVEN;.VAR
. I,J: INTEGER;.BEGIN. E[0].X:=1;
E[0].Y:=0;. FOR I:=1 TO 3 DO BEGIN.
J:=I-1;. E[I].X:=+E[J].Y;. E[I].Y:
=-E[J].X;. END.END.;.PROCEDURE.
SETPEN (A,B: INTEGER);.BEGIN. X:=A; Y
:=B;.END.;.PROCEDURE. DRAW.
(L,A: INTEGER);.VAR. X1,Y1: I
NTEGER;.BEGIN. A:=(A+4) MOD 4;. X1:=X+
L*E[A].X;. Y1:=Y+L*E[A].Y;. PLOT(2,X,Y
,X1,Y1);. X:=X1;. Y:=Y1;.END.;.PROCEDU
RE. MOVETO(L,K: INTEGER);.BEGIN
. X:=X+L*E[K].X;. Y:=Y+L*E[K].Y;.END.;
.#PARAMETER.PROCEDURE. GENERATE(G
,ALFA: INTEGER);.VAR. F,K,HOEK: I
NTEGER;. STATUS: BOOLEAN;.BEGIN
. IF (G=ORDE+1). THEN DRAW(L,ALFA).
ELSE BEGIN. K:=GEN.RY[G];. IF (K
=0) THEN. K:=2+RANDOM MOD (NG-1);
. FOR F:=1 TO NF[K] DO BEGIN. HOE
K:=REEKS[K][F].DRAAI;. STATUS:=REEKS
[K][F].PEN;. ALFA:=(ALFA+HOEK) MOD 4
;. IF STATUS. THEN GENERATE(G+1
,ALFA). ELSE MOVETO(POWER[G],ALFA).
END. END.END.;.BEGIN (* ISLES *).
PRIMITIEVEN;. REPEAT. PARAMETERS;.
GRAFINIT(0,2);. SETPEN(X0,Y0);.
INK(7);. GENERATE(1,0);. IF AFDRU
K THEN BEGIN. MOVE; HARDCOPY. E
ND. UNTIL KLAAROVER.END...
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL