Quantum
fce178d777
Part 2 takes about 2 seconds per iteration and needs to do 46857582 iterations. From what ive tested everything else works and the C64 is capable of decrementing 46857582 so the loop should finish successfully... eventually...
73 lines
1.4 KiB
QBasic
73 lines
1.4 KiB
QBasic
0 DIM WD(20)
|
|
1 DIM NA(20)
|
|
2 DIM NB(20)
|
|
3 DIM PR(20)
|
|
|
|
100 INPUT "TIME"; TM
|
|
110 INPUT "DIST"; DI$
|
|
111 DW = LEN(DI$)
|
|
112 FOR I=1 TO DW: WD(DW-I)=ASC(MID$(DI$,I,1))-48 :NEXT
|
|
199 WI = 0
|
|
200 FOR X = 0 TO TM
|
|
201 IF X MOD 100000 = 0 THEN PRINT X
|
|
210 N = TM - X
|
|
211 GOSUB 2000
|
|
212 FOR J=0 TO D: NA(J)=NS(J) :NEXT
|
|
213 DA = D
|
|
214 N = X
|
|
215 GOSUB 2000
|
|
216 FOR J=0 TO D: NB(J)=NS(J) :NEXT
|
|
217 DB = D
|
|
218 GOSUB 3000
|
|
219 GOSUB 3500
|
|
220 IF G > 0 THEN WINS = WINS + 1
|
|
300 NEXT X
|
|
310 PRINT WINS
|
|
320 END
|
|
|
|
2000 REM INT TO BASE10 STREAM
|
|
2010 D=0
|
|
2020 A = N
|
|
2021 B = 10
|
|
2022 GOSUB 2500
|
|
2023 NS(D) = M
|
|
2030 N = INT(N / 10)
|
|
2040 D = D + 1
|
|
2050 IF N > 0 THEN GOTO 2020
|
|
2060 RETURN
|
|
|
|
2499 REM
|
|
2500 REM MODULO
|
|
2501 REM
|
|
2510 M = A - INT(A / B) * B
|
|
2520 RETURN
|
|
|
|
3000 FOR I=0 TO DB
|
|
3010 FOR J=0 TO DA
|
|
3020 PR(I + J) = PR(I + J) + (NA(J) * NB(I))
|
|
3030 NEXT J
|
|
3040 NEXT I
|
|
3050 REM FIXING TIME
|
|
3060 FOR I=0 TO (DA+DB)
|
|
3070 TP = INT(PR(I) / 10)
|
|
3080 A = PR(I)
|
|
3081 B = 10
|
|
3082 GOSUB 2500
|
|
3083 PR(I) = M
|
|
3090 PR(I + 1) = PR(I + 1) + TP
|
|
3100 NEXT I
|
|
3110 IF PR(I) > 0 THEN GOTO 3140
|
|
3120 I = I - 1
|
|
3130 GOTO 3110
|
|
3140 DP = I
|
|
3150 RETURN
|
|
|
|
3500 IF DP > DW THEN GOTO 3540
|
|
3501 FOR I=DP TO 0 STEP -1
|
|
3510 IF PR(I) > WD(I) THEN GOTO 3540
|
|
3511 IF PR(I) < WD(I) THEN GOTO 3530
|
|
3520 NEXT I
|
|
3530 G = 0
|
|
3531 RETURN
|
|
3540 G = 1
|
|
3541 RETURN
|