From dcebd44260fa67b04d217e778265982393ccc032 Mon Sep 17 00:00:00 2001 From: Andreas Grois Date: Wed, 17 Dec 2025 07:30:19 +0100 Subject: Day4: Comment programs and export text version. --- day4/part2.TXT | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 day4/part2.TXT (limited to 'day4/part2.TXT') diff --git a/day4/part2.TXT b/day4/part2.TXT new file mode 100644 index 0000000..33779c5 --- /dev/null +++ b/day4/part2.TXT @@ -0,0 +1,89 @@ +\START92\ +\COMMENT=Part2 Day4 s: parsed input, w: input width +\NAME=part2 +\FILE=day4.part2.92f +(s,w) +Func +Local h,i,j,k,l,curr,prevs,pc,result,stack,stnum + +newMat(2,2500)\->\stack +0\->\stnum +0\->\result +dim(s)\->\h +If h<1 Then + Return result +ElseIf h=1 Then + cntbits(s[1])\->\result[dim(result)] + Return result +EndIf + +For i,1,w + newList(3)\->\prevs + false\->\pc + For j,1,h + getbits(s[j],i-1,3)\->\curr + cnt3bits(curr)\->\prevs[mod(j,3)+1] + \(C)\'and' is not short circuiting + If pc Then + If sum(prevs)<5 Then + result+1\->\result + zerobit(s[j-1],i)\->\s[j-1] + stnum+1\->\stnum + j-1\->\stack[1,stnum] + i\->\stack[2,stnum] + EndIf + EndIf + curr=2 or curr=3 or curr=6 or curr=7\->\pc + EndFor + \(C)\ last line + If pc Then + 0\->\prevs[mod(h+1,3)+1] + If sum(prevs)<5 Then + result+1\->\result + zerobit(s[h],i)\->\s[h] + stnum+1\->\stnum + h\->\stack[1,stnum] + i\->\stack[2,stnum] + EndIf + EndIf +EndFor + + +While stnum>0 + stack[1,stnum]\->\l + stack[2,stnum]\->\k + stnum-1\->\stnum + For j,max(1,l-1),min(h,l+1) + For i,max(1,k-1),min(w,k+1) + If i\!=\k or j\!=\l Then + getbits(s[j],i-1,3)\->\curr + If curr=2 or curr=3 or curr\>=\6 Then + cnt3bits(curr)\->\prevs[1] + If j>1 Then + cnt3bits(getbits(s[j-1],i-1,3))\->\prevs[2] + Else + 0\->\prevs[2] + EndIf + If j\prevs[3] + Else + 0\->\prevs[3] + EndIf + If sum(prevs)<5 Then + result+1\->\result + zerobit(s[j],i)\->\s[j] + stnum+1\->\stnum + j\->\stack[1,stnum] + i\->\stack[2,stnum] + EndIf + EndIf + EndIf + EndFor + EndFor +EndWhile + +result + +EndFunc + +\STOP92\ -- cgit v1.2.3