From 6314273f43c01a3ac5c5bb8768c8c698328671e5 Mon Sep 17 00:00:00 2001 From: Aleteoryx Date: Mon, 1 Dec 2025 14:57:45 -0500 Subject: [PATCH] 2025.01.2, finally --- aoc/2025/01.tal | 67 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 60 insertions(+), 7 deletions(-) diff --git a/aoc/2025/01.tal b/aoc/2025/01.tal index 9f8d9a7129a0ace28b2e3431a82a85d26809a6f4..d410f0b9edd4a1f99498da2c38f320652e7c1a5d 100644 --- a/aoc/2025/01.tal +++ b/aoc/2025/01.tal @@ -8,6 +8,8 @@ @on-reset ( -> ) banner first-star + Dial/reset + second-star BRK @banner ( -- ) @@ -26,7 +28,7 @@ putdec2 endl JMP2r -@first-star/str "first 20 "star: 20 00 +@first-star/str "first 20 "star: 09 00 @first-star/newline ( -- ) Number/get Dial/rotate @@ -42,6 +44,49 @@ !Number/one-byte +( second star ) + +@second-star ( -- ) + ;/input Input/read + + [ LIT2 &pass $2 ] + ;/str puts + putdec2 endl + + JMP2r +@second-star/str "second 20 "star: 09 00 + +@second-star/newline ( -- ) + #0000 + Dial/get #0000 EQU2 ?{ + Dial/getraw + Number/get + #0064 DIV2k MUL2 SUB2 + Dial/op + + DUP2 #6401 LTH2 STH + #6463 GTH2 STHr ORA ( c < 25601 || c > 25699 ) + ORA + } + + Number/get Dial/rotate + + DUP2 putdec2 #2018 DEO Dial/get putdec2 endl + + Number/get #0064 DIV2 ( extra-overflow* ) + ADD2 + + ,/pass LDR2 ADD2 ,/pass STR2 + + !Number/reset + +@second-star/input ( b -- ) + DUP #0a NEQ ?{ POP !/newline } + DUP LIT "R NEQ ?{ POP !Dial/right } + DUP LIT "L NEQ ?{ POP !Dial/left } + !Number/one-byte + + ( stdlib ) @endl ( n -- ) @@ -74,8 +119,8 @@ @Input/filename "01.input 00 @Input/read ( callback* -- ) - ;/filename #a8 DEO2 #01ab DEO + ;/filename #a8 DEO2 &loop DUP2 @@ -87,6 +132,7 @@ &endloop POP2 JMP2r + @Number/one-byte ( b -- ) #00 SWP @@ -100,18 +146,25 @@ @Number/reset ( -- ) #0000 ,/val STR2 JMP2r + ( problem code ) @Dial/get ( -- n* ) ,/state LDR2 #6400 SUB2 JMP2r +@Dial/getraw ( -- n* ) + ,/state LDR2 JMP2r +@Dial/reset ( -- ) + #6432 ,/state STR2 JMP2r @Dial/rotate ( n* -- ) - [ LIT2 &state 6432 ] ( start @ 1050 ) - SWP2 &op $1 + [ LIT2 &state 6432 ] ( start @ 25650 ) + SWP2 /op #0064 DIV2k MUL2 SUB2 ( mod 100 ) - #6400 ADD2 ( keep in range 100-199 ) + #6400 ADD2 ( keep in range 25600-25699 ) ,/state STR2 @Dial/left ( -- ) - [ LIT2 SUB2 _/op ] STR JMP2r + [ LIT2 SUB2 _/opc ] STR JMP2r @Dial/right ( -- ) - [ LIT2 ADD2 _/op ] STR JMP2r + [ LIT2 ADD2 _/opc ] STR JMP2r +@Dial/op ( a* b* -- a?b* ) + &opc $1 JMP2r