aboutsummaryrefslogtreecommitdiffstats
path: root/day6/both.bas
diff options
context:
space:
mode:
Diffstat (limited to 'day6/both.bas')
-rw-r--r--day6/both.bas110
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
+