aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClyne Sullivan <clyne@bitgloo.com>2022-12-03 10:26:52 -0500
committerClyne Sullivan <clyne@bitgloo.com>2022-12-03 10:26:52 -0500
commitec22d6d0c30cc0d896d302866059a603701d8094 (patch)
treee95cd9f9b45345d0587c820aa453d98880ed342a
parent01407692c113b24083342fe08dd31d5767a1c925 (diff)
add day 3
-rw-r--r--day3/part1.bas32
-rw-r--r--day3/part2.bas39
2 files changed, 71 insertions, 0 deletions
diff --git a/day3/part1.bas b/day3/part1.bas
new file mode 100644
index 0000000..dc73234
--- /dev/null
+++ b/day3/part1.bas
@@ -0,0 +1,32 @@
+REM Advent of Code 2022: Day 3, part 1
+REM Written in Applesoft BASIC
+
+ 10 ONERR GOTO 900
+ 20 PT = 0
+ 30 PRINT CHR$ (4),"OPEN INPUT"
+ 40 PRINT CHR$ (4),"READ INPUT"
+ 100 S$ = ""
+ 110 GET C$: GET D$
+ 120 IF ASC (C$) = 13 GOTO 200
+ 130 S$ = S$ + C$
+ 140 GOTO 110
+ 200 L = LEN (S$) / 2
+ 210 LS$ = LEFT$ (S$,L)
+ 220 RS$ = RIGHT$ (S$,L)
+ 230 LL = LEN (LS$)
+ 240 RL = LEN (RS$)
+ 250 FOR I = 1 TO LL
+ 260 FOR J = 1 TO RL
+ 270 IF MID$ (LS$,I,1) = MID$ (RS$,J,1) GOTO 400
+ 280 NEXT J
+ 290 NEXT I
+ 400 PR = ASC ( MID$ (LS$,I,1))
+ 410 PR = PR - 64
+ 420 IF PR > 32 THEN PP = PR - 32
+ 430 IF PR < 32 THEN PP = PR + 26
+ 440 PT = PT + PP
+ 450 PRINT "FOUND: "; MID$ (LS$,I,1);" PRIO ";PP;" TOTAL: ";PT
+ 500 GOTO 100
+ 900 PRINT CHR$ (4),"CLOSE"
+ 910 END
+
diff --git a/day3/part2.bas b/day3/part2.bas
new file mode 100644
index 0000000..ba4e7b9
--- /dev/null
+++ b/day3/part2.bas
@@ -0,0 +1,39 @@
+REM Advent of Code 2022: Day 3, part 2
+REM Written in Applesoft BASIC
+
+ 10 ONERR GOTO 900
+ 20 PT = 0:SN = 0:GN = 1
+ 30 PRINT CHR$ (4),"OPEN INPUT"
+ 40 PRINT CHR$ (4),"READ INPUT"
+ 100 S$ = ""
+ 110 GET C$: GET D$
+ 120 IF ASC (C$) = 13 GOTO 200
+ 130 S$ = S$ + C$
+ 140 GOTO 110
+ 200 IF SN = 0 THEN X$ = S$:SN = 1: GOTO 100
+ 210 IF SN = 1 THEN Y$ = S$:SN = 2: GOTO 100
+ 220 Z$ = S$
+ 230 SN = 0
+ 240 PRINT "SEARCHING GROUP ";GN;"'s RUCKSACKS..."
+ 250 GN = GN + 1
+ 300 FOR I = 1 TO LEN (X$)
+ 310 FOR J = 1 TO LEN (Y$)
+ 320 IF MID$ (X$,I,1) = MID$ (Y$,J,1) GOTO 340
+ 330 NEXT J: NEXT I
+ 340 FOR J = 1 TO LEN (Z$)
+ 370 IF MID$ (X$,I,1) = MID$ (Z$,J,1) GOTO 400
+ 380 NEXT J: NEXT I
+ 400 XC$ = MID$ (X$,I,1)
+ 410 PR = ASC (XC$)
+ 420 PR = PR - 64
+ 430 IF PR > 32 THEN PP = PR - 32
+ 440 IF PR < 32 THEN PP = PR + 26
+ 450 PT = PT + PP
+ 460 PRINT "FOUND ITEM TYPE FOR GROUP ";GN - 1;"'S BADGES: ";XC$
+ 470 PRINT "APPLYING AUTHENTICITY STICKERS..."
+ 480 FOR Q = 1 TO 1000: NEXT Q
+ 490 PRINT "PRIORITY TOTAL IS NOW ";PT
+ 499 GOTO 100
+ 900 PRINT CHR$ (4),"CLOSE"
+ 910 END
+