1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
\START92\
\COMMENT=Part1 Day4 s: parsed input, w: input width
\NAME=part1
\FILE=day4.part1.92f
(s,w)
Func
Local h,i,j,curr,prevs,pc,result
dim(s)\->\h
If h<1 Then
Return 0
ElseIf h=1 Then
Return cntbits(s[1])
EndIf
0\->\result
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
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
EndIf
EndIf
EndFor
result
EndFunc
\STOP92\
|