Commit | Line | Data |
---|---|---|
81e70d48 PH |
1 | PROGRAM PLOTHILBERTKURVEN(INPUT,OUTPUT); |
2 | ||
3 | CONST H0=2560; | |
4 | ||
5 | VAR N,H,I: INTEGER; | |
6 | ||
7 | PROCEDURE ANFANG; | |
8 | BEGIN | |
9 | WRITELN("H", H DIV 2 + 100 :1, "@", H DIV 2 + 100 :1, "AKI") | |
10 | END (* ANFANG *); | |
11 | ||
12 | PROCEDURE STRECKE(R: INTEGER); | |
13 | BEGIN | |
14 | CASE R MOD 4 OF | |
15 | 0: WRITELN(H:1,"A@J"); | |
16 | 1: WRITELN(H:1,"@AJ"); | |
17 | 2: WRITELN(H:1,"Q@J"); | |
18 | 3: WRITELN(H:1,"PAJ") | |
19 | END | |
20 | END (* STRECKE *); | |
21 | ||
22 | PROCEDURE SCHLUSS; | |
23 | BEGIN | |
24 | WRITELN("H", H0:1,"@AK"); | |
25 | FOR I := 1 TO 384 DO WRITE(" "); WRITELN | |
26 | END (* SCHLUSS *); | |
27 | ||
28 | ||
29 | PROCEDURE HILBERT(I,R,S: INTEGER); | |
30 | BEGIN | |
31 | IF I>0 THEN | |
32 | BEGIN | |
33 | HILBERT(I-1,R-S,-S); | |
34 | STRECKE(R-S); | |
35 | HILBERT(I-1,R,S); | |
36 | STRECKE(R); | |
37 | HILBERT(I-1,R,S); | |
38 | STRECKE(R+S); | |
39 | HILBERT(I-1,R+S,-S) | |
40 | END | |
41 | END (* HILBERT *); | |
42 | ||
43 | ||
44 | BEGIN | |
45 | WHILE NOT EOF DO | |
46 | BEGIN READ(N); | |
47 | H := H0; FOR I := 1 TO N DO H := H DIV 2; | |
48 | ANFANG; | |
49 | HILBERT(N,1,1); | |
50 | SCHLUSS | |
51 | END | |
52 | END. |