diff options
Diffstat (limited to 'day6/both.bas')
-rw-r--r-- | day6/both.bas | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/day6/both.bas b/day6/both.bas new file mode 100644 index 0000000..d5a70a3 --- /dev/null +++ b/day6/both.bas @@ -0,0 +1,110 @@ +REM Advent of Code 2022: Day 6, part 1 and 2 +REM Written in Applesoft BASIC + + 5 HOME + 10 A = 1000 + 20 R = 0 + 50 PRINT CHR$ (4),"OPEN INPUT" + 60 PRINT CHR$ (4),"READ INPUT" + 70 ONERR GOTO 900 + 100 PRINT "INITIALIZING COMMUNICATION SYSTEM"; + 105 A = 350 + 110 FOR I = 0 TO 6 + 120 GOSUB 1000 + 130 PRINT "."; + 140 NEXT I + 150 PRINT + 200 PRINT "OPENING SIGNAL DATASTREAM"; + 210 FOR I = 0 TO 6 + 220 GOSUB 1000 + 230 PRINT "."; + 240 NEXT I + 250 PRINT + 260 PRINT + 300 PRINT "SCANNING FOR START-OF-PACKET MARKER:" + 310 HTAB 1 + 320 VTAB 8 + 330 PRINT "||||"; + 340 HTAB 1 + 350 VTAB 10 + 360 PRINT "||||"; + 400 HTAB 1 + 410 VTAB 9 + 420 PRINT S$; + 430 IF LEN (S$) > = 4 GOTO 500 + 440 GET C$ + 450 S$ = C$ + S$ + 455 IF LEN (S$) > 40 THEN S$ = MID$ (S$,1,40) + 460 A = 80 + 470 GOSUB 1000 + 475 R = R + 1 + 480 GOTO 400 + 500 HTAB 1 + 510 VTAB 7 + 530 IF MID$ (S$,1,1) = MID$ (S$,2,1) THEN PRINT "/\ ";: GOTO 600 + 540 IF MID$ (S$,1,1) = MID$ (S$,3,1) THEN PRINT "/-\ ";: GOTO 600 + 550 IF MID$ (S$,1,1) = MID$ (S$,4,1) THEN PRINT "/--\";: GOTO 600 + 560 IF MID$ (S$,2,1) = MID$ (S$,3,1) THEN PRINT " /\ ";: GOTO 600 + 570 IF MID$ (S$,2,1) = MID$ (S$,4,1) THEN PRINT " /-\";: GOTO 600 + 580 IF MID$ (S$,3,1) = MID$ (S$,4,1) THEN PRINT " /\";: GOTO 600 + 590 PRINT " "; + 595 GOTO 700 + 600 GOTO 440 + 620 VTAB 14 + 700 HTAB 1 + 710 VTAB 13 + 715 A = 1300 + 720 PRINT "MARKER FOUND AT INDEX ";R;"." + 725 GOSUB 1000 + 730 PRINT + 740 PRINT "ENGAGING FULL-SPEED SEARCH FOR START-OF-MESSAGE MARKER:" + 750 GOSUB 1000 + 760 GOTO 2000 + 900 PRINT CHR$ (4),"CLOSE" + 910 END + 1000 FOR Z = 0 TO A: NEXT Z + 1010 RETURN + 2000 HTAB 1 + 2010 VTAB 19 + 2020 PRINT "||||||||||||||"; + 2030 HTAB 1 + 2040 VTAB 21 + 2050 PRINT "||||||||||||||"; + 2060 PRINT CHR$ (4),"CLOSE" + 2070 PRINT CHR$ (4),"OPEN INPUT" + 2080 PRINT CHR$ (4),"READ INPUT" + 2090 S$ = "":R = 0 + 2095 M = 0 + 2100 HTAB 1 + 2110 VTAB 20 + 2120 PRINT S$; + 2130 GET C$ + 2140 S$ = C$ + S$ + 2145 R = R + 1 + 2150 IF LEN (S$) < 14 GOTO 2100 + 2160 IF LEN (S$) > 40 THEN S$ = MID$ (S$,1,40) + 2170 IF M > 0 THEN M = M - 1: GOTO 2100 + 2190 I = 1 + 2200 M = 0 + 2210 FOR J = I + 1 TO 14 + 2220 IF MID$ (S$,I,1) = MID$ (S$,J,1) THEN M = J:J = 14 + 2230 NEXT J + 2240 IF M < > 0 GOTO 2300 + 2250 I = I + 1 + 2260 IF I < 14 GOTO 2200 + 2270 GOTO 2400 + 2300 HTAB I + 2310 VTAB 18 + 2314 PRINT " "; + 2318 HTAB I + 2320 FOR J = I TO M + 2330 PRINT "-"; + 2340 NEXT J + 2345 M = 14 - M + 2350 GOTO 2100 + 2400 HTAB 1 + 2410 VTAB 23 + 2420 PRINT "MESSAGE FOUND AT INDEX ";R"." + 2425 GOSUB 1000 + 2430 GOTO 900 + |