00000000: 50 52 4F 47 52 41 4D 0D 20 20 20 20 20 20 20 20 |PROGRAM. |
00000010: 6D 6F 75 6E 74 61 69 6E 3B 0D 43 4F 4E 53 54 0D |mountain;.CONST.|
00000020: 20 20 20 20 20 20 20 20 20 20 4E 3D 20 32 35 36 | N= 256|
00000030: 3B 0D 56 41 52 0D 20 20 20 20 20 20 20 20 20 20 |;.VAR. |
00000040: 6B 3A 20 41 52 52 41 59 20 5B 30 2E 2E 4E 5D 0D |k: ARRAY [0..N].|
00000050: 20 20 20 20 20 20 20 20 20 20 20 20 20 4F 46 20 | OF |
00000060: 69 6E 74 65 67 65 72 3B 0D 20 20 20 20 74 6F 70 |integer;. top|
00000070: 2C 61 2C 62 2C 0D 20 20 20 4D 2C 68 31 2C 68 2C |,a,b,. M,h1,h,|
00000080: 73 2C 0D 20 20 20 20 20 6E 67 2C 69 2C 78 3A 20 |s,. ng,i,x: |
00000090: 69 6E 74 65 67 65 72 3B 0D 20 20 20 20 20 20 20 |integer;. |
000000A0: 20 20 20 63 3A 20 63 68 61 72 3B 0D 23 61 72 74 | c: char;.#art|
000000B0: 2E 6C 69 62 0D 42 45 47 49 4E 0D 20 52 45 50 45 |.lib.BEGIN. REPE|
000000C0: 41 54 0D 20 20 70 61 67 65 3B 20 65 6D 70 74 79 |AT. page; empty|
000000D0: 3B 0D 20 20 77 72 69 74 65 6C 6E 28 27 4D 4F 55 |;. writeln('MOU|
000000E0: 4E 54 41 49 4E 27 29 3B 0D 20 20 77 72 69 74 65 |NTAIN');. write|
000000F0: 28 27 41 61 6E 74 61 6C 20 67 65 6E 65 72 61 74 |('Aantal generat|
00000100: 69 65 73 20 3D 20 27 29 3B 0D 20 20 72 65 61 64 |ies = ');. read|
00000110: 6C 6E 28 6E 67 29 3B 0D 20 20 77 72 69 74 65 28 |ln(ng);. write(|
00000120: 27 48 6F 6F 67 74 65 20 74 6F 70 20 5B 30 2E 2E |'Hoogte top [0..|
00000130: 31 39 39 5D 20 3D 20 27 29 3B 0D 20 20 72 65 61 |199] = ');. rea|
00000140: 64 6C 6E 28 74 6F 70 29 3B 0D 20 20 77 72 69 74 |dln(top);. writ|
00000150: 65 28 27 48 6F 72 69 7A 6F 6E 20 5B 30 2E 2E 39 |e('Horizon [0..9|
00000160: 39 5D 20 3D 20 27 29 3B 0D 20 20 72 65 61 64 6C |9] = ');. readl|
00000170: 6E 28 4D 29 3B 0D 20 20 77 72 69 74 65 28 27 48 |n(M);. write('H|
00000180: 69 72 65 73 20 73 63 68 65 72 6D 20 73 63 68 6F |ires scherm scho|
00000190: 6F 6E 20 27 2C 0D 20 20 20 20 20 20 20 20 27 28 |on ',. '(|
000001A0: 6A 2F 6E 29 20 3F 20 27 29 3B 0D 20 20 72 65 61 |j/n) ? ');. rea|
000001B0: 64 6C 6E 28 63 29 3B 0D 20 20 49 46 A0 28 63 3D |dln(c);. IF.(c=|
000001C0: 27 6A 27 29 20 54 48 45 4E 20 67 72 61 66 69 6E |'j') THEN grafin|
000001D0: 69 74 28 30 2C 32 29 0D 20 20 20 20 20 20 20 20 |it(0,2). |
000001E0: 20 20 20 20 20 45 4C 53 45 20 68 69 72 65 73 28 | ELSE hires(|
000001F0: 31 29 3B 0D 20 20 6B 5B 30 5D 3A 3D 30 3B 20 6B |1);. k[0]:=0; k|
00000200: 5B 4E 5D 3A 3D 30 3B 0D 20 20 73 3A 3D 4E 20 44 |[N]:=0;. s:=N D|
00000210: 49 56 20 32 3B 20 6B 5B 73 5D 3A 3D 74 6F 70 3B |IV 2; k[s]:=top;|
00000220: 0D 20 20 68 3A 3D 73 20 44 49 56 20 32 3B 20 68 |. h:=s DIV 2; h|
00000230: 31 3A 3D 68 20 44 49 56 20 32 3B 0D 20 20 46 4F |1:=h DIV 2;. FO|
00000240: 52 20 69 3A 3D 32 20 54 4F A0 6E 67 20 44 4F 20 |R i:=2 TO.ng DO |
00000250: 42 45 47 49 4E 0D 20 20 20 20 78 3A 3D 68 3B 0D |BEGIN. x:=h;.|
00000260: 20 20 20 20 57 48 49 4C 45 20 28 78 3C 3D 4E 29 | WHILE (x<=N)|
00000270: 20 44 4F 20 42 45 47 49 4E 0D 20 20 20 20 20 20 | DO BEGIN. |
00000280: 6B 5B 78 5D 3A 3D 28 6B 5B 78 2D 68 5D 2B 6B 5B |k[x]:=(k[x-h]+k[|
00000290: 78 2B 68 5D 29 44 49 56 20 32 0D 20 20 20 20 20 |x+h])DIV 2. |
000002A0: 20 20 20 20 20 20 20 2D 68 31 2B 72 61 6E 64 6F | -h1+rando|
000002B0: 6D 20 4D 4F 44 20 68 3B 0D 20 20 20 20 20 20 78 |m MOD h;. x|
000002C0: 3A 3D 78 2B 73 0D 20 20 20 20 45 4E 44 3B 0D 20 |:=x+s. END;. |
000002D0: 20 20 20 73 3A 3D 68 3B 20 68 3A 3D 68 31 3B 20 | s:=h; h:=h1; |
000002E0: 68 31 3A 3D 68 31 20 44 49 56 20 32 0D 20 20 45 |h1:=h1 DIV 2. E|
000002F0: 4E 44 3B 0D 20 20 61 3A 3D 30 3B 20 62 3A 3D 4D |ND;. a:=0; b:=M|
00000300: 3B 20 78 3A 3D 73 3B 0D 20 20 57 48 49 4C 45 20 |; x:=s;. WHILE |
00000310: 28 78 3C 3D 4E 29 20 44 4F 20 42 45 47 49 4E 0D |(x<=N) DO BEGIN.|
00000320: 20 20 20 20 70 6C 6F 74 28 32 2C 61 2C 62 2C 78 | plot(2,a,b,x|
00000330: 2C 6B 5B 78 5D 2B 4D 29 3B 0D 20 20 20 20 61 3A |,k[x]+M);. a:|
00000340: 3D 78 3B 20 62 3A 3D 6B 5B 78 5D 2B 4D 20 3B 20 |=x; b:=k[x]+M ; |
00000350: 78 3A 3D 78 2B 73 3B 0D 20 20 45 4E 44 3B 0D 20 |x:=x+s;. END;. |
00000360: 20 49 46 20 61 66 64 72 75 6B 20 54 48 45 4E 20 | IF afdruk THEN |
00000370: 42 45 47 49 4E 0D 20 20 20 20 20 6D 6F 76 65 3B |BEGIN. move;|
00000380: 20 68 61 72 64 63 6F 70 79 0D 20 20 45 4E 44 0D | hardcopy. END.|
00000390: 20 55 4E 54 49 4C 20 6B 6C 61 61 72 6F 76 65 72 | UNTIL klaarover|
000003A0: 0D 45 4E 44 2E 0D FF |.END... |
PROGRAM. MOUNTAIN;.CONST.
N= 256;.VAR. K: ARRAY [0..N].
OF INTEGER;. TOP,A,B,.
M,H1,H,S,. NG,I,X: INTEGER;.
C: CHAR;.#ART.LIB.BEGIN. REPEAT. PAG
E; EMPTY;. WRITELN('MOUNTAIN');. WRITE
('AANTAL GENERATIES = ');. READLN(NG);.
WRITE('HOOGTE TOP [0..199] = ');. REA
DLN(TOP);. WRITE('HORIZON [0..99] = ');
. READLN(M);. WRITE('HIRES SCHERM SCHO
ON ',. '(J/N) ? ');. READLN(C);.
IF (C='J') THEN GRAFINIT(0,2).
ELSE HIRES(1);. K[0]:=0; K[N]:=0;.
S:=N DIV 2; K[S]:=TOP;. H:=S DIV 2; H
1:=H DIV 2;. FOR I:=2 TO NG DO BEGIN.
X:=H;. WHILE (X<=N) DO BEGIN.
K[X]:=(K[X-H]+K[X+H])DIV 2. -
H1+RANDOM MOD H;. X:=X+S. END;.
S:=H; H:=H1; H1:=H1 DIV 2. END;. A:
=0; B:=M; X:=S;. WHILE (X<=N) DO BEGIN.
PLOT(2,A,B,X,K[X]+M);. A:=X; B:=K
[X]+M ; X:=X+S;. END;. IF AFDRUK THEN
BEGIN. MOVE; HARDCOPY. END. UNTIL K
LAAROVER.END...
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL