summaryrefslogtreecommitdiff
path: root/day4/day4.part2.92f
blob: 9aaaaf0fa11fa100b92054c3f05923d7d92a9292 (plain)
ofshex dumpascii
0000 2a 2a 54 49 39 32 2a 2a 01 00 64 61 79 34 00 00 00 00 50 61 72 74 32 20 44 61 79 34 20 73 3a 20 **TI92**..day4....Part2.Day4.s:.
0020 70 61 72 73 65 64 20 69 6e 70 75 74 2c 20 77 3a 20 69 6e 70 75 74 20 77 69 64 01 00 52 00 00 00 parsed.input,.w:.input.wid..R...
0040 70 61 72 74 32 00 00 00 12 00 00 00 f4 05 00 00 a5 5a 00 00 00 00 05 9a 28 73 2c 77 29 0d 46 75 part2............Z......(s,w).Fu
0060 6e 63 0d 4c 6f 63 61 6c 20 68 2c 69 2c 6a 2c 6b 2c 6c 2c 63 75 72 72 2c 70 72 65 76 73 2c 70 63 nc.Local.h,i,j,k,l,curr,prevs,pc
0080 2c 72 65 73 75 6c 74 2c 73 74 61 63 6b 2c 73 74 6e 75 6d 0d 0d 6e 65 77 4d 61 74 28 32 2c 32 35 ,result,stack,stnum..newMat(2,25
00a0 30 30 29 16 73 74 61 63 6b 0d 30 16 73 74 6e 75 6d 0d 30 16 72 65 73 75 6c 74 0d 64 69 6d 28 73 00).stack.0.stnum.0.result.dim(s
00c0 29 16 68 0d 49 66 20 68 3c 31 20 54 68 65 6e 0d 20 52 65 74 75 72 6e 20 72 65 73 75 6c 74 0d 45 ).h.If.h<1.Then..Return.result.E
00e0 6c 73 65 49 66 20 68 3d 31 20 54 68 65 6e 0d 20 63 6e 74 62 69 74 73 28 73 5b 31 5d 29 16 72 65 lseIf.h=1.Then..cntbits(s[1]).re
0100 73 75 6c 74 5b 64 69 6d 28 72 65 73 75 6c 74 29 5d 0d 20 52 65 74 75 72 6e 20 72 65 73 75 6c 74 sult[dim(result)]..Return.result
0120 0d 45 6e 64 49 66 0d 0d 46 6f 72 20 69 2c 31 2c 77 0d 20 6e 65 77 4c 69 73 74 28 33 29 16 70 72 .EndIf..For.i,1,w..newList(3).pr
0140 65 76 73 0d 20 66 61 6c 73 65 16 70 63 0d 20 46 6f 72 20 6a 2c 31 2c 68 0d 20 20 67 65 74 62 69 evs..false.pc..For.j,1,h...getbi
0160 74 73 28 73 5b 6a 5d 2c 69 2d 31 2c 33 29 16 63 75 72 72 0d 20 20 63 6e 74 33 62 69 74 73 28 63 ts(s[j],i-1,3).curr...cnt3bits(c
0180 75 72 72 29 16 70 72 65 76 73 5b 6d 6f 64 28 6a 2c 33 29 2b 31 5d 0d 20 20 a9 27 61 6e 64 27 20 urr).prevs[mod(j,3)+1]....'and'.
01a0 69 73 20 6e 6f 74 20 73 68 6f 72 74 20 63 69 72 63 75 69 74 69 6e 67 0d 20 20 49 66 20 70 63 20 is.not.short.circuiting...If.pc.
01c0 54 68 65 6e 0d 20 20 20 49 66 20 73 75 6d 28 70 72 65 76 73 29 3c 35 20 54 68 65 6e 0d 20 20 20 Then....If.sum(prevs)<5.Then....
01e0 20 72 65 73 75 6c 74 2b 31 16 72 65 73 75 6c 74 0d 20 20 20 20 7a 65 72 6f 62 69 74 28 73 5b 6a .result+1.result.....zerobit(s[j
0200 2d 31 5d 2c 69 29 16 73 5b 6a 2d 31 5d 0d 20 20 20 20 73 74 6e 75 6d 2b 31 16 73 74 6e 75 6d 0d -1],i).s[j-1].....stnum+1.stnum.
0220 20 20 20 20 6a 2d 31 16 73 74 61 63 6b 5b 31 2c 73 74 6e 75 6d 5d 0d 20 20 20 20 69 16 73 74 61 ....j-1.stack[1,stnum].....i.sta
0240 63 6b 5b 32 2c 73 74 6e 75 6d 5d 0d 20 20 20 45 6e 64 49 66 0d 20 20 45 6e 64 49 66 0d 20 20 63 ck[2,stnum]....EndIf...EndIf...c
0260 75 72 72 3d 32 20 6f 72 20 63 75 72 72 3d 33 20 6f 72 20 63 75 72 72 3d 36 20 6f 72 20 63 75 72 urr=2.or.curr=3.or.curr=6.or.cur
0280 72 3d 37 16 70 63 0d 20 45 6e 64 46 6f 72 0d 20 a9 20 6c 61 73 74 20 6c 69 6e 65 0d 20 49 66 20 r=7.pc..EndFor....last.line..If.
02a0 70 63 20 54 68 65 6e 0d 20 20 30 16 70 72 65 76 73 5b 6d 6f 64 28 68 2b 31 2c 33 29 2b 31 5d 0d pc.Then...0.prevs[mod(h+1,3)+1].
02c0 20 20 49 66 20 73 75 6d 28 70 72 65 76 73 29 3c 35 20 54 68 65 6e 0d 20 20 20 72 65 73 75 6c 74 ..If.sum(prevs)<5.Then....result
02e0 2b 31 16 72 65 73 75 6c 74 0d 20 20 20 7a 65 72 6f 62 69 74 28 73 5b 68 5d 2c 69 29 16 73 5b 68 +1.result....zerobit(s[h],i).s[h
0300 5d 0d 20 20 20 73 74 6e 75 6d 2b 31 16 73 74 6e 75 6d 0d 20 20 20 68 16 73 74 61 63 6b 5b 31 2c ]....stnum+1.stnum....h.stack[1,
0320 73 74 6e 75 6d 5d 0d 20 20 20 69 16 73 74 61 63 6b 5b 32 2c 73 74 6e 75 6d 5d 0d 20 20 45 6e 64 stnum]....i.stack[2,stnum]...End
0340 49 66 0d 20 45 6e 64 49 66 0d 45 6e 64 46 6f 72 0d 0d 0d 57 68 69 6c 65 20 73 74 6e 75 6d 3e 30 If..EndIf.EndFor...While.stnum>0
0360 0d 20 73 74 61 63 6b 5b 31 2c 73 74 6e 75 6d 5d 16 6c 0d 20 73 74 61 63 6b 5b 32 2c 73 74 6e 75 ..stack[1,stnum].l..stack[2,stnu
0380 6d 5d 16 6b 0d 20 73 74 6e 75 6d 2d 31 16 73 74 6e 75 6d 0d 20 46 6f 72 20 6a 2c 6d 61 78 28 31 m].k..stnum-1.stnum..For.j,max(1
03a0 2c 6c 2d 31 29 2c 6d 69 6e 28 68 2c 6c 2b 31 29 0d 20 20 46 6f 72 20 69 2c 6d 61 78 28 31 2c 6b ,l-1),min(h,l+1)...For.i,max(1,k
03c0 2d 31 29 2c 6d 69 6e 28 77 2c 6b 2b 31 29 0d 20 20 20 49 66 20 69 9d 6b 20 6f 72 20 6a 9d 6c 20 -1),min(w,k+1)....If.i.k.or.j.l.
03e0 54 68 65 6e 0d 20 20 20 20 67 65 74 62 69 74 73 28 73 5b 6a 5d 2c 69 2d 31 2c 33 29 16 63 75 72 Then.....getbits(s[j],i-1,3).cur
0400 72 0d 20 20 20 20 49 66 20 63 75 72 72 3d 32 20 6f 72 20 63 75 72 72 3d 33 20 6f 72 20 63 75 72 r.....If.curr=2.or.curr=3.or.cur
0420 72 9e 36 20 54 68 65 6e 0d 20 20 20 20 20 63 6e 74 33 62 69 74 73 28 63 75 72 72 29 16 70 72 65 r.6.Then......cnt3bits(curr).pre
0440 76 73 5b 31 5d 0d 20 20 20 20 20 49 66 20 6a 3e 31 20 54 68 65 6e 0d 20 20 20 20 20 20 63 6e 74 vs[1]......If.j>1.Then.......cnt
0460 33 62 69 74 73 28 67 65 74 62 69 74 73 28 73 5b 6a 2d 31 5d 2c 69 2d 31 2c 33 29 29 16 70 72 65 3bits(getbits(s[j-1],i-1,3)).pre
0480 76 73 5b 32 5d 0d 20 20 20 20 20 45 6c 73 65 0d 20 20 20 20 20 20 30 16 70 72 65 76 73 5b 32 5d vs[2]......Else.......0.prevs[2]
04a0 0d 20 20 20 20 20 45 6e 64 49 66 0d 20 20 20 20 20 49 66 20 6a 3c 68 20 54 68 65 6e 0d 20 20 20 ......EndIf......If.j<h.Then....
04c0 20 20 20 63 6e 74 33 62 69 74 73 28 67 65 74 62 69 74 73 28 73 5b 6a 2b 31 5d 2c 69 2d 31 2c 33 ...cnt3bits(getbits(s[j+1],i-1,3
04e0 29 29 16 70 72 65 76 73 5b 33 5d 0d 20 20 20 20 20 45 6c 73 65 0d 20 20 20 20 20 20 30 16 70 72 )).prevs[3]......Else.......0.pr
0500 65 76 73 5b 33 5d 0d 20 20 20 20 20 45 6e 64 49 66 0d 20 20 20 20 20 49 66 20 73 75 6d 28 70 72 evs[3]......EndIf......If.sum(pr
0520 65 76 73 29 3c 35 20 54 68 65 6e 0d 20 20 20 20 20 20 72 65 73 75 6c 74 2b 31 16 72 65 73 75 6c evs)<5.Then.......result+1.resul
0540 74 0d 20 20 20 20 20 20 7a 65 72 6f 62 69 74 28 73 5b 6a 5d 2c 69 29 16 73 5b 6a 5d 0d 20 20 20 t.......zerobit(s[j],i).s[j]....
0560 20 20 20 73 74 6e 75 6d 2b 31 16 73 74 6e 75 6d 0d 20 20 20 20 20 20 6a 16 73 74 61 63 6b 5b 31 ...stnum+1.stnum.......j.stack[1
0580 2c 73 74 6e 75 6d 5d 0d 20 20 20 20 20 20 69 16 73 74 61 63 6b 5b 32 2c 73 74 6e 75 6d 5d 0d 20 ,stnum].......i.stack[2,stnum]..
05a0 20 20 20 20 45 6e 64 49 66 0d 20 20 20 20 45 6e 64 49 66 0d 20 20 20 45 6e 64 49 66 0d 20 20 45 ....EndIf.....EndIf....EndIf...E
05c0 6e 64 46 6f 72 0d 20 45 6e 64 46 6f 72 0d 45 6e 64 57 68 69 6c 65 0d 0d 72 65 73 75 6c 74 0d 0d ndFor..EndFor.EndWhile..result..
05e0 45 6e 64 46 75 6e 63 0d 00 00 00 19 e4 e5 00 00 08 dc df ae EndFunc.............