Skip to content

Commit

Permalink
day15b
Browse files Browse the repository at this point in the history
  • Loading branch information
jonathanperret committed Dec 15, 2021
1 parent e7b56d4 commit 64149b2
Show file tree
Hide file tree
Showing 3 changed files with 127 additions and 21 deletions.
39 changes: 38 additions & 1 deletion day15.tal
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,52 @@

;open-file JSR2

P< "risk_matrix_size= >P ;risk-matrix/_risks_end ;risk-matrix/_risks SUB2 DBGSHORTDEC POP2
P< "visited_size= >P ;cost-matrix/_visited_end ;cost-matrix/_visited SUB2 DBGSHORTDEC POP2
P< "costs_size= >P ;cost-matrix/_costlist_end ;cost-matrix/_costlist SUB2 DBGSHORTDEC POP2

;read-byte ;risk-matrix/parse JSR2
#0005 [ ;cost-matrix/scale STA2 ]
;cost-matrix/init JSR2
;cost-matrix/flood-all JSR2
;flood-all JSR2
;cost-matrix/get-end-cost JSR2 DBGSHORTDEC POP2

BRK

[ ]

( -- )
@flood-all
#0000 #0000 #0000 ;cost-matrix/set-at JSR2
#0000 #2000 DO
( DBGSHORTDECn SP ;&count JSR2 DBGSHORTDEC POP2 )
DUP2 ;cost-matrix/flood-matching JSR2
;cost-matrix/is-end-visited JSR2
NOT ,&flood-all/not-done JCN
UNLOOP
;cost-matrix/dump JSR2
RTN
&flood-all/not-done
DUP2 #0100 MOD2 #0000 NEQ2 ,&no-render JCN
;dump-visited JSR2
&no-render
( ;cost-matrix/dump JSR2 )
LOOP
RTN

( -- )
@dump-visited
[ ;cost-matrix/_w LDA2 ] DBGSHORTDECn SP POP2
[ ;cost-matrix/_h LDA2 ] DBGSHORTDEC POP2
#0000 [ ;cost-matrix/_h LDA2 ] DO
#0000 [ ;cost-matrix/_w LDA2 ] DO
DUP4 SWP2 ;cost-matrix/get-visited JSR2
LIT '0 ADD EMIT
LOOP
LF
LOOP
RTN

@open-file
;argv .File/name DEO2
#0001 .File/length DEO2
Expand Down
55 changes: 36 additions & 19 deletions day15_lib.tal
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
~library/console.lib.tal
~library/string.tal
~library/math.tal

@risk-matrix
[ &_risks $3000 &_w $2 &_h $2 ]
[ &_risks $2720 &_risks_end &_w $2 &_h $2 ]

( get-byte -- )
&parse
[ ;&parse/get-byte STA2 ]
#00 #3000 ;&_risks ;memset JSR2
#00 ;&_risks_end ;&_risks SUB2 ;&_risks ;memset JSR2

#0000 [ ;&_h STA2 ]
LIT2r :&_risks ( : p* )
Expand Down Expand Up @@ -32,9 +36,16 @@

( x y -- ptr )
&ptr-at
DUP2 [ ;&_h LDA2 ] GEQ2 ,&ptr-at/outside JCN
OVR2 [ ;&_w LDA2 ] GEQ2 ,&ptr-at/outside JCN
[ ;&_h LDA2 ] MUL2 ADD2
( x y )
[ ;&_h LDA2 ] MOD2
( x y%h )
[ ;&_w LDA2 ] MUL2 ( x y*w )

SWP2
( y*w x )
[ ;&_w LDA2 ] MOD2

ADD2
;&_risks ADD2
RTN

Expand All @@ -47,10 +58,10 @@

( -- )
&dump
[ ;&_w LDA2 ] DBGSHORTDECn SP POP2
[ ;&_h LDA2 ] DBGSHORTDEC POP2
#0000 [ ;&_h LDA2 ] DO
#0000 [ ;&_w LDA2 ] DO
[ ;&_w LDA2 ] [ ;cost-matrix/scale LDA2 ] MUL2 DBGSHORTDECn SP POP2
[ ;&_h LDA2 ] [ ;cost-matrix/scale LDA2 ] MUL2 DBGSHORTDEC POP2
#0000 [ ;&_h LDA2 ] [ ;cost-matrix/scale LDA2 ] MUL2 DO
#0000 [ ;&_w LDA2 ] [ ;cost-matrix/scale LDA2 ] MUL2 DO
DUP4 SWP2 ;&get-at JSR2
LIT '0 ADD EMIT
SP
Expand All @@ -61,15 +72,21 @@

( x y -- val )
&get-at
;&ptr-at JSR2 LDA
DUP4 ;&ptr-at JSR2 LDA
STH ( x y : val )
[ ;&_h LDA2 ] DIV2 ( x y-tile : val )
SWP2 [ ;&_w LDA2 ] DIV2 ( y-tile x-tile : val )
ADD2 ( tile : val )
NIP STHr ( tile8 val )
DEC ADD #09 MOD INC
RTN

%COSTLIST_SIZE { $5000 }
%VISITED_SIZE { $7c00 }

@cost-matrix
&init
[ ;risk-matrix/_w LDA2 ] [ ;&_w STA2 ]
[ ;risk-matrix/_h LDA2 ] [ ;&_h STA2 ]
[ ;risk-matrix/_w LDA2 ] [ ;cost-matrix/scale LDA2 ] MUL2 [ ;&_w STA2 ]
[ ;risk-matrix/_h LDA2 ] [ ;cost-matrix/scale LDA2 ] MUL2 [ ;&_h STA2 ]
[ ;&_w LDA2 ] DEC2 8// INC2 [ ;&_visited_w STA2 ]
#00 ;&_costlist_end ;&_costlist SUB2 ;&_costlist ;memset JSR2
#00 ;&_visited_end ;&_visited SUB2 ;&_visited ;memset JSR2
Expand Down Expand Up @@ -404,10 +421,10 @@
;&get-end JSR2
RTN

[ &_costlist COSTLIST_SIZE &_costlist_end
[
&_w $2 &_h $2 &_visited_w $2
&_visited $1000 &_visited_end ]

~library/console.lib.tal
~library/string.tal
~library/math.tal
&_visited VISITED_SIZE &_visited_end
&scale 0001
&_costlist
|ff00 &_costlist_end
]
54 changes: 53 additions & 1 deletion day15_tests.tal
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,59 @@
T< "get-end-cost: >T
;cost-matrix/get-end-cost JSR2 DBGSHORTDEC POP2
( EXPECT 40 )

#0005 [ ;cost-matrix/scale STA2 ]
;risk-matrix/dump JSR2
( EXPECT 50 50 )
( EXPECT 1 1 6 3 7 5 1 7 4 2 2 2 7 4 8 6 2 8 5 3 3 3 8 5 9 7 3 9 6 4 4 4 9 6 1 8 4 1 7 5 5 5 1 7 2 9 5 2 8 6 )
( EXPECT 1 3 8 1 3 7 3 6 7 2 2 4 9 2 4 8 4 7 8 3 3 5 1 3 5 9 5 8 9 4 4 6 2 4 6 1 6 9 1 5 5 7 3 5 7 2 7 1 2 6 )
( EXPECT 2 1 3 6 5 1 1 3 2 8 3 2 4 7 6 2 2 4 3 9 4 3 5 8 7 3 3 5 4 1 5 4 6 9 8 4 4 6 5 2 6 5 7 1 9 5 5 7 6 3 )
( EXPECT 3 6 9 4 9 3 1 5 6 9 4 7 1 5 1 4 2 6 7 1 5 8 2 6 2 5 3 7 8 2 6 9 3 7 3 6 4 8 9 3 7 1 4 8 4 7 5 9 1 4 )
( EXPECT 7 4 6 3 4 1 7 1 1 1 8 5 7 4 5 2 8 2 2 2 9 6 8 5 6 3 9 3 3 3 1 7 9 6 7 4 1 4 4 4 2 8 1 7 8 5 2 5 5 5 )
( EXPECT 1 3 1 9 1 2 8 1 3 7 2 4 2 1 2 3 9 2 4 8 3 5 3 2 3 4 1 3 5 9 4 6 4 3 4 5 2 4 6 1 5 7 5 4 5 6 3 5 7 2 )
( EXPECT 1 3 5 9 9 1 2 4 2 1 2 4 6 1 1 2 3 5 3 2 3 5 7 2 2 3 4 6 4 3 4 6 8 3 3 4 5 7 5 4 5 7 9 4 4 5 6 8 6 5 )
( EXPECT 3 1 2 5 4 2 1 6 3 9 4 2 3 6 5 3 2 7 4 1 5 3 4 7 6 4 3 8 5 2 6 4 5 8 7 5 4 9 6 3 7 5 6 9 8 6 5 1 7 4 )
( EXPECT 1 2 9 3 1 3 8 5 2 1 2 3 1 4 2 4 9 6 3 2 3 4 2 5 3 5 1 7 4 3 4 5 3 6 4 6 2 8 5 4 5 6 4 7 5 7 3 9 6 5 )
( EXPECT 2 3 1 1 9 4 4 5 8 1 3 4 2 2 1 5 5 6 9 2 4 5 3 3 2 6 6 7 1 3 5 6 4 4 3 7 7 8 2 4 6 7 5 5 4 8 8 9 3 5 )
( EXPECT 2 2 7 4 8 6 2 8 5 3 3 3 8 5 9 7 3 9 6 4 4 4 9 6 1 8 4 1 7 5 5 5 1 7 2 9 5 2 8 6 6 6 2 8 3 1 6 3 9 7 )
( EXPECT 2 4 9 2 4 8 4 7 8 3 3 5 1 3 5 9 5 8 9 4 4 6 2 4 6 1 6 9 1 5 5 7 3 5 7 2 7 1 2 6 6 8 4 6 8 3 8 2 3 7 )
( EXPECT 3 2 4 7 6 2 2 4 3 9 4 3 5 8 7 3 3 5 4 1 5 4 6 9 8 4 4 6 5 2 6 5 7 1 9 5 5 7 6 3 7 6 8 2 1 6 6 8 7 4 )
( EXPECT 4 7 1 5 1 4 2 6 7 1 5 8 2 6 2 5 3 7 8 2 6 9 3 7 3 6 4 8 9 3 7 1 4 8 4 7 5 9 1 4 8 2 5 9 5 8 6 1 2 5 )
( EXPECT 8 5 7 4 5 2 8 2 2 2 9 6 8 5 6 3 9 3 3 3 1 7 9 6 7 4 1 4 4 4 2 8 1 7 8 5 2 5 5 5 3 9 2 8 9 6 3 6 6 6 )
( EXPECT 2 4 2 1 2 3 9 2 4 8 3 5 3 2 3 4 1 3 5 9 4 6 4 3 4 5 2 4 6 1 5 7 5 4 5 6 3 5 7 2 6 8 6 5 6 7 4 6 8 3 )
( EXPECT 2 4 6 1 1 2 3 5 3 2 3 5 7 2 2 3 4 6 4 3 4 6 8 3 3 4 5 7 5 4 5 7 9 4 4 5 6 8 6 5 6 8 1 5 5 6 7 9 7 6 )
( EXPECT 4 2 3 6 5 3 2 7 4 1 5 3 4 7 6 4 3 8 5 2 6 4 5 8 7 5 4 9 6 3 7 5 6 9 8 6 5 1 7 4 8 6 7 1 9 7 6 2 8 5 )
( EXPECT 2 3 1 4 2 4 9 6 3 2 3 4 2 5 3 5 1 7 4 3 4 5 3 6 4 6 2 8 5 4 5 6 4 7 5 7 3 9 6 5 6 7 5 8 6 8 4 1 7 6 )
( EXPECT 3 4 2 2 1 5 5 6 9 2 4 5 3 3 2 6 6 7 1 3 5 6 4 4 3 7 7 8 2 4 6 7 5 5 4 8 8 9 3 5 7 8 6 6 5 9 9 1 4 6 )
( EXPECT 3 3 8 5 9 7 3 9 6 4 4 4 9 6 1 8 4 1 7 5 5 5 1 7 2 9 5 2 8 6 6 6 2 8 3 1 6 3 9 7 7 7 3 9 4 2 7 4 1 8 )
( EXPECT 3 5 1 3 5 9 5 8 9 4 4 6 2 4 6 1 6 9 1 5 5 7 3 5 7 2 7 1 2 6 6 8 4 6 8 3 8 2 3 7 7 9 5 7 9 4 9 3 4 8 )
( EXPECT 4 3 5 8 7 3 3 5 4 1 5 4 6 9 8 4 4 6 5 2 6 5 7 1 9 5 5 7 6 3 7 6 8 2 1 6 6 8 7 4 8 7 9 3 2 7 7 9 8 5 )
( EXPECT 5 8 2 6 2 5 3 7 8 2 6 9 3 7 3 6 4 8 9 3 7 1 4 8 4 7 5 9 1 4 8 2 5 9 5 8 6 1 2 5 9 3 6 1 6 9 7 2 3 6 )
( EXPECT 9 6 8 5 6 3 9 3 3 3 1 7 9 6 7 4 1 4 4 4 2 8 1 7 8 5 2 5 5 5 3 9 2 8 9 6 3 6 6 6 4 1 3 9 1 7 4 7 7 7 )
( EXPECT 3 5 3 2 3 4 1 3 5 9 4 6 4 3 4 5 2 4 6 1 5 7 5 4 5 6 3 5 7 2 6 8 6 5 6 7 4 6 8 3 7 9 7 6 7 8 5 7 9 4 )
( EXPECT 3 5 7 2 2 3 4 6 4 3 4 6 8 3 3 4 5 7 5 4 5 7 9 4 4 5 6 8 6 5 6 8 1 5 5 6 7 9 7 6 7 9 2 6 6 7 8 1 8 7 )
( EXPECT 5 3 4 7 6 4 3 8 5 2 6 4 5 8 7 5 4 9 6 3 7 5 6 9 8 6 5 1 7 4 8 6 7 1 9 7 6 2 8 5 9 7 8 2 1 8 7 3 9 6 )
( EXPECT 3 4 2 5 3 5 1 7 4 3 4 5 3 6 4 6 2 8 5 4 5 6 4 7 5 7 3 9 6 5 6 7 5 8 6 8 4 1 7 6 7 8 6 9 7 9 5 2 8 7 )
( EXPECT 4 5 3 3 2 6 6 7 1 3 5 6 4 4 3 7 7 8 2 4 6 7 5 5 4 8 8 9 3 5 7 8 6 6 5 9 9 1 4 6 8 9 7 7 6 1 1 2 5 7 )
( EXPECT 4 4 9 6 1 8 4 1 7 5 5 5 1 7 2 9 5 2 8 6 6 6 2 8 3 1 6 3 9 7 7 7 3 9 4 2 7 4 1 8 8 8 4 1 5 3 8 5 2 9 )
( EXPECT 4 6 2 4 6 1 6 9 1 5 5 7 3 5 7 2 7 1 2 6 6 8 4 6 8 3 8 2 3 7 7 9 5 7 9 4 9 3 4 8 8 1 6 8 1 5 1 4 5 9 )
( EXPECT 5 4 6 9 8 4 4 6 5 2 6 5 7 1 9 5 5 7 6 3 7 6 8 2 1 6 6 8 7 4 8 7 9 3 2 7 7 9 8 5 9 8 1 4 3 8 8 1 9 6 )
( EXPECT 6 9 3 7 3 6 4 8 9 3 7 1 4 8 4 7 5 9 1 4 8 2 5 9 5 8 6 1 2 5 9 3 6 1 6 9 7 2 3 6 1 4 7 2 7 1 8 3 4 7 )
( EXPECT 1 7 9 6 7 4 1 4 4 4 2 8 1 7 8 5 2 5 5 5 3 9 2 8 9 6 3 6 6 6 4 1 3 9 1 7 4 7 7 7 5 2 4 1 2 8 5 8 8 8 )
( EXPECT 4 6 4 3 4 5 2 4 6 1 5 7 5 4 5 6 3 5 7 2 6 8 6 5 6 7 4 6 8 3 7 9 7 6 7 8 5 7 9 4 8 1 8 7 8 9 6 8 1 5 )
( EXPECT 4 6 8 3 3 4 5 7 5 4 5 7 9 4 4 5 6 8 6 5 6 8 1 5 5 6 7 9 7 6 7 9 2 6 6 7 8 1 8 7 8 1 3 7 7 8 9 2 9 8 )
( EXPECT 6 4 5 8 7 5 4 9 6 3 7 5 6 9 8 6 5 1 7 4 8 6 7 1 9 7 6 2 8 5 9 7 8 2 1 8 7 3 9 6 1 8 9 3 2 9 8 4 1 7 )
( EXPECT 4 5 3 6 4 6 2 8 5 4 5 6 4 7 5 7 3 9 6 5 6 7 5 8 6 8 4 1 7 6 7 8 6 9 7 9 5 2 8 7 8 9 7 1 8 1 6 3 9 8 )
( EXPECT 5 6 4 4 3 7 7 8 2 4 6 7 5 5 4 8 8 9 3 5 7 8 6 6 5 9 9 1 4 6 8 9 7 7 6 1 1 2 5 7 9 1 8 8 7 2 2 3 6 8 )
( EXPECT 5 5 1 7 2 9 5 2 8 6 6 6 2 8 3 1 6 3 9 7 7 7 3 9 4 2 7 4 1 8 8 8 4 1 5 3 8 5 2 9 9 9 5 2 6 4 9 6 3 1 )
( EXPECT 5 7 3 5 7 2 7 1 2 6 6 8 4 6 8 3 8 2 3 7 7 9 5 7 9 4 9 3 4 8 8 1 6 8 1 5 1 4 5 9 9 2 7 9 2 6 2 5 6 1 )
( EXPECT 6 5 7 1 9 5 5 7 6 3 7 6 8 2 1 6 6 8 7 4 8 7 9 3 2 7 7 9 8 5 9 8 1 4 3 8 8 1 9 6 1 9 2 5 4 9 9 2 1 7 )
( EXPECT 7 1 4 8 4 7 5 9 1 4 8 2 5 9 5 8 6 1 2 5 9 3 6 1 6 9 7 2 3 6 1 4 7 2 7 1 8 3 4 7 2 5 8 3 8 2 9 4 5 8 )
( EXPECT 2 8 1 7 8 5 2 5 5 5 3 9 2 8 9 6 3 6 6 6 4 1 3 9 1 7 4 7 7 7 5 2 4 1 2 8 5 8 8 8 6 3 5 2 3 9 6 9 9 9 )
( EXPECT 5 7 5 4 5 6 3 5 7 2 6 8 6 5 6 7 4 6 8 3 7 9 7 6 7 8 5 7 9 4 8 1 8 7 8 9 6 8 1 5 9 2 9 8 9 1 7 9 2 6 )
( EXPECT 5 7 9 4 4 5 6 8 6 5 6 8 1 5 5 6 7 9 7 6 7 9 2 6 6 7 8 1 8 7 8 1 3 7 7 8 9 2 9 8 9 2 4 8 8 9 1 3 1 9 )
( EXPECT 7 5 6 9 8 6 5 1 7 4 8 6 7 1 9 7 6 2 8 5 9 7 8 2 1 8 7 3 9 6 1 8 9 3 2 9 8 4 1 7 2 9 1 4 3 1 9 5 2 8 )
( EXPECT 5 6 4 7 5 7 3 9 6 5 6 7 5 8 6 8 4 1 7 6 7 8 6 9 7 9 5 2 8 7 8 9 7 1 8 1 6 3 9 8 9 1 8 2 9 2 7 4 1 9 )
( EXPECT 6 7 5 5 4 8 8 9 3 5 7 8 6 6 5 9 9 1 4 6 8 9 7 7 6 1 1 2 5 7 9 1 8 8 7 2 2 3 6 8 1 2 9 9 8 3 3 4 7 9 )
T< "👍 >T
BRK !

Expand Down

0 comments on commit 64149b2

Please sign in to comment.