Code: Alles auswählen
+----+
| 0 |
+----+
|
v
+----+
| 1 |
+----+
|
v
+----+
+- | 4 | -+
| +----+ |
| | |
| v |
| +----+ |
| | 5 | -+----+
| +----+ | |
| | | |
| v | |
| +----+ | |
| | 6 | <+ |
| +----+ |
| | |
| v |
| +----+ |
+> | 7 | <-----+
+----+
|
v
+----+
| 10 | -+
+----+ |
| |
v |
+----+ |
| 11 | |
+----+ |
| |
v |
+----+ |
| 12 | <+
+----+
|
v
+----+
| 15 |
+----+
|
v
+----+
| 16 |
+----+
|
v
+----+
| 19 |
+----+
Hier die Lösung in BASIC für den C64:
Code: Alles auswählen
10 TI$="000000":OM=1000000:DIM A(100),H(3),J(100,2):N=0
20 PRINT"READING ADAPTER JOLTS...":OPEN 2,8,2,"INPUT10,S,R"
30 IF ST<>0 THEN CLOSE 2:PRINT"READING TIME: "TI$:GOTO 100
40 INPUT#2,A(N):PRINT N:PRINT"{UP}";:N=N+1:GOTO 30
100 PRINT"SORTING ADAPTERS..."
110 F=0:FOR I=1 TO N:IF A(I-1)<A(I) THEN F=-1:T=A(I):A(I)=A(I-1):A(I-1)=T
120 NEXT:IF F THEN 110
130 REM CALCULATE DIFFERENCE HISTOGRAM
140 FOR I=1 TO N:D=A(I-1)-A(I):H(D)=H(D)+1:NEXT
150 PRINT"PART 1:";H(1)*(H(3)+1):PRINT"TIME SO FAR: "TI$
200 REM CALCULATE TOTAL JOLTAGE
210 J(0,0)=1:FOR I=0 TO N:FOR J=I+1 TO I+3:IF J>N THEN 250
220 IF A(I)-A(J)>3 THEN 250
230 L=J(I,0)+J(J,0):H=J(I,1)+J(J,1):IF L>OM THEN L=L-OM:H=H+1
240 J(J,0)=L:J(J,1)=H
250 NEXT:NEXT:PRINT"PART 2:"J(N,1)"MIO. +"J(N,0):PRINT"TOTAL TIME: "TI$