blob: a09a0cfc57f24af1503c97ea79808f0ecdac3267 (
plain)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
|
;;;; aoc-2022-8.lisp
(defpackage #:aoc/2022/8
(:use #:cl)
(:import-from #:alexandria
#:copy-array))
(in-package #:aoc/2022/8)
(defparameter +problem-8-input+
(make-array '(99 99) :initial-contents
(list
(list 0 0 0 1 0 1 0 0 2 1 0 2 0 0 3 1 2 1 3 2 3 2 4 1 1 4 4 2 3 3 3 0 4 2 4 2 0 4 4 4 4 4 2 2 4 3 2 2 5 5 5 1 2 2 2 2 4 1 1 1 4 4 2 4 3 0 0 4 2 0 0 2 4 2 2 4 0 4 0 1 1 0 3 3 2 0 0 1 0 2 3 1 2 0 1 0 2 2 2)
(list 2 2 1 0 0 1 2 1 0 3 2 0 1 1 1 2 0 0 0 2 3 3 4 1 0 2 2 2 1 4 2 2 3 1 3 4 0 3 1 4 1 3 1 1 1 4 5 1 5 3 2 4 1 2 3 5 5 5 2 4 5 5 2 4 3 3 0 1 3 1 3 1 4 4 1 4 3 0 4 3 0 2 3 0 0 3 1 1 3 3 0 0 3 0 0 2 2 2 0)
(list 1 2 2 2 2 1 2 3 1 0 0 0 3 2 3 3 2 0 2 0 0 2 3 4 4 4 3 1 2 3 4 1 0 2 2 2 4 4 3 5 5 5 1 1 1 5 3 1 2 5 1 2 4 4 2 4 5 5 3 2 5 5 1 5 3 3 1 0 2 3 2 4 2 3 1 1 3 4 2 4 1 4 0 0 3 3 1 2 3 1 1 0 3 3 1 1 2 0 2)
(list 0 0 2 1 0 1 0 0 2 2 2 0 3 0 2 2 3 4 3 4 4 3 3 3 0 4 2 4 3 0 1 3 4 1 1 5 5 1 3 3 3 2 1 2 3 4 1 5 1 3 5 4 4 1 4 3 4 5 1 5 5 2 1 4 1 1 5 4 3 3 3 1 1 0 1 3 2 3 0 3 4 1 3 1 0 0 2 2 3 1 3 2 2 0 1 2 2 0 0)
(list 0 1 2 1 0 3 2 1 1 1 3 1 2 3 0 3 1 0 2 3 1 1 1 2 1 4 4 2 3 4 3 1 5 5 3 5 4 5 2 4 5 5 5 2 5 2 2 3 2 1 4 1 3 3 1 3 2 2 3 5 2 2 3 5 4 3 1 2 5 5 4 4 1 0 2 1 2 4 1 3 4 0 3 1 2 3 1 1 3 1 2 2 2 2 1 0 1 1 2)
(list 1 1 1 1 3 0 0 0 2 1 3 1 0 0 3 0 1 3 4 2 3 0 3 0 3 1 2 1 2 1 1 4 1 4 5 1 1 1 2 3 1 2 2 2 1 5 3 5 3 1 3 2 5 2 4 5 5 4 4 3 3 4 3 3 2 2 5 2 5 3 2 1 2 0 2 0 4 3 4 4 1 2 4 0 0 2 3 2 1 1 1 0 2 3 3 3 1 1 0)
(list 0 1 0 1 0 1 1 3 3 2 0 3 2 2 2 4 3 2 2 2 3 1 1 2 1 1 5 3 2 2 5 3 1 4 5 2 1 2 1 2 3 2 1 1 1 5 1 4 4 3 5 2 4 1 3 3 2 4 5 5 3 2 3 1 3 3 1 5 4 3 1 1 2 2 5 1 1 1 1 1 3 1 0 1 0 4 2 1 0 0 1 3 3 2 3 1 2 2 0)
(list 2 1 2 3 1 2 1 2 2 2 0 1 4 2 3 3 1 1 0 1 2 3 4 4 4 4 3 4 5 4 3 4 1 2 2 4 4 2 4 2 4 1 4 5 3 2 6 4 3 6 3 5 2 2 2 1 5 5 5 2 4 2 5 4 4 4 1 3 2 4 4 5 3 1 1 4 2 0 0 0 2 4 1 2 2 4 0 1 0 1 2 2 0 2 1 3 3 0 1)
(list 1 0 1 0 2 3 3 1 1 3 3 2 3 3 3 3 1 2 3 1 0 0 4 2 3 1 2 5 4 5 1 2 1 5 4 1 3 5 5 2 3 2 5 6 6 3 4 2 4 6 6 6 5 4 6 4 2 4 4 6 6 4 4 1 2 3 2 4 3 3 5 4 4 1 3 1 4 2 1 0 0 0 1 0 4 3 4 4 1 1 3 0 3 1 2 0 1 2 3)
(list 1 2 0 1 3 0 0 2 0 3 4 4 4 4 2 2 1 2 3 2 1 4 5 2 4 3 2 1 1 1 2 1 4 3 1 4 2 2 4 4 2 5 4 6 2 5 3 5 5 6 4 4 2 6 3 5 5 5 4 4 6 2 3 2 2 2 2 4 4 5 4 3 3 4 2 2 2 1 4 3 0 3 2 3 2 2 4 3 0 3 4 1 2 1 2 3 1 2 3)
(list 1 0 0 1 2 2 2 0 1 4 3 3 4 4 0 3 0 1 0 2 2 4 2 1 2 1 2 1 5 3 3 4 4 3 2 6 3 3 5 2 5 4 3 3 6 3 3 2 3 6 2 5 2 4 4 5 5 2 5 5 5 3 6 2 5 3 4 2 2 1 2 1 5 1 1 2 1 5 5 4 2 1 1 1 4 0 4 4 3 4 3 3 3 2 0 3 1 3 1)
(list 0 1 3 3 0 2 0 3 3 0 4 3 4 2 1 0 3 1 4 3 5 3 1 2 2 5 3 1 3 5 3 5 4 2 6 3 2 2 4 2 2 2 4 6 5 5 5 4 5 6 6 3 2 5 3 6 4 5 6 6 4 6 3 6 2 2 3 6 6 2 4 1 1 4 3 4 1 4 1 3 5 1 3 0 4 4 1 3 0 1 2 4 3 2 3 3 1 1 2)
(list 3 1 3 0 3 3 3 2 0 0 3 1 4 2 1 0 2 2 4 1 3 3 4 4 3 1 1 5 5 4 2 6 3 4 6 3 3 3 6 5 5 5 3 2 4 6 6 5 3 2 6 4 6 4 4 4 2 6 6 3 5 2 2 5 6 3 4 2 3 2 4 2 3 4 3 5 1 5 2 5 5 1 4 1 0 4 2 4 3 4 1 1 0 3 1 3 3 0 2)
(list 2 0 2 1 1 0 3 3 0 2 2 0 0 2 4 3 5 1 3 5 5 5 5 3 5 2 4 3 4 3 3 5 3 2 6 3 4 5 2 5 6 4 6 6 2 4 4 4 6 5 2 2 6 4 6 6 4 6 4 4 2 6 3 2 2 2 4 2 2 3 4 3 3 5 1 4 3 3 3 1 3 2 4 5 2 0 4 1 4 0 0 3 1 0 4 2 2 3 3)
(list 2 3 1 2 2 2 1 3 0 0 0 3 1 3 1 5 2 1 4 4 3 5 3 1 5 1 3 2 2 3 2 6 3 2 2 5 5 2 3 6 4 6 5 4 6 2 4 5 7 7 6 4 7 6 5 5 2 2 5 2 4 3 3 5 3 2 3 4 3 4 2 3 2 5 6 2 1 1 4 1 5 5 2 1 1 1 1 3 3 2 2 1 1 4 0 0 2 1 3)
(list 1 3 0 3 0 1 4 1 2 3 3 1 2 4 5 4 2 2 2 4 2 1 4 4 4 2 3 2 3 2 4 4 2 6 6 6 3 4 3 5 4 3 7 6 6 5 5 4 5 6 5 3 7 6 6 6 7 5 4 3 6 4 6 3 4 3 2 4 5 2 3 3 3 4 5 4 3 1 1 4 4 4 2 4 3 5 1 2 2 0 2 0 1 1 3 0 3 1 1)
(list 1 0 1 0 0 1 3 0 2 0 3 3 4 4 3 3 2 2 3 3 2 1 3 5 4 6 3 5 3 2 4 2 6 2 4 3 5 3 4 7 4 3 7 4 5 5 5 5 7 5 7 3 7 3 4 3 5 5 4 6 5 4 5 6 2 2 6 4 4 2 2 5 3 2 2 6 2 1 1 4 5 4 1 2 5 5 2 2 0 0 0 0 3 0 2 3 2 2 2)
(list 3 2 3 1 4 1 1 3 0 0 3 3 5 3 5 3 3 1 3 3 2 2 3 2 6 3 4 2 6 6 2 6 6 2 5 2 4 5 6 7 6 3 7 5 5 7 6 6 7 4 5 5 4 3 6 3 7 3 3 6 5 7 5 7 6 6 6 3 5 6 6 2 5 6 6 2 5 5 1 1 1 5 4 1 5 4 2 1 5 3 1 2 0 4 0 3 4 3 3)
(list 3 0 1 3 3 3 1 4 2 3 1 1 1 3 1 4 4 1 2 5 2 3 2 4 4 5 5 5 5 3 5 5 2 5 6 4 6 7 7 6 3 5 5 4 5 7 5 7 5 7 6 6 6 7 4 3 5 7 4 7 4 4 6 3 6 7 5 5 5 2 4 3 3 5 6 2 4 3 5 6 5 2 1 3 4 2 4 2 5 2 0 3 4 4 0 3 4 1 1)
(list 1 1 3 3 4 1 0 1 3 3 0 1 3 2 2 4 3 3 4 5 4 2 2 5 5 6 5 4 6 3 6 2 4 3 7 6 6 5 7 5 5 6 7 6 6 4 5 3 4 7 6 6 5 5 6 4 3 3 6 5 4 3 4 7 6 7 3 5 4 4 6 2 2 2 4 3 6 6 6 3 6 4 3 1 1 3 2 2 1 4 2 3 3 3 1 1 3 4 0)
(list 2 4 4 1 0 3 0 2 3 1 1 3 4 5 5 4 3 1 1 4 3 2 6 3 3 2 4 4 4 2 5 7 6 6 6 6 4 5 4 7 3 7 7 5 7 4 3 4 5 4 3 6 4 7 7 4 5 4 7 7 7 3 3 6 4 4 6 3 5 4 3 2 5 2 6 5 6 5 2 4 2 2 2 3 2 5 2 2 4 3 2 4 4 0 1 3 3 4 2)
(list 0 3 3 4 0 2 2 4 4 2 1 5 5 3 4 2 2 5 4 2 6 6 6 4 2 2 4 4 3 5 6 6 4 5 7 4 3 5 7 7 6 4 6 4 4 6 4 4 5 7 4 6 5 5 6 5 3 4 3 6 4 5 5 4 4 4 3 4 6 4 7 4 4 3 5 4 6 5 6 5 2 4 3 5 2 2 5 5 4 3 1 2 2 1 0 2 0 4 3)
(list 1 2 2 4 2 0 4 3 5 1 4 4 2 1 5 4 3 4 3 2 4 2 2 5 6 4 2 3 4 4 4 7 6 4 7 3 6 7 3 7 3 5 7 7 5 5 4 4 6 8 5 7 7 8 4 4 6 5 5 5 5 3 4 7 7 4 7 3 6 7 4 6 3 4 6 5 2 6 4 6 2 3 2 1 4 1 3 1 1 2 1 2 1 4 3 1 1 2 4)
(list 3 4 0 1 4 4 4 1 2 4 1 1 1 4 5 3 1 2 5 5 4 5 3 4 4 3 4 5 7 4 5 3 6 3 7 6 5 4 5 3 8 8 7 7 4 8 5 5 5 7 4 4 8 8 8 5 8 5 8 6 5 4 3 3 3 5 7 3 3 4 5 3 5 6 2 4 3 5 3 2 4 3 4 6 1 5 4 5 4 2 2 4 5 2 4 1 1 0 1)
(list 4 0 4 1 2 0 3 3 4 3 1 1 5 3 1 3 6 2 6 2 5 5 4 3 5 4 7 5 7 7 7 5 6 4 3 7 4 4 6 5 4 8 7 6 7 4 5 7 8 6 7 7 5 8 4 4 4 5 5 8 8 4 7 5 5 5 6 4 5 7 7 5 6 6 5 2 4 2 2 6 3 6 2 5 4 2 3 4 3 5 2 1 5 3 3 2 4 4 2)
(list 2 1 2 0 1 0 4 3 5 1 3 2 2 1 2 5 2 4 6 5 5 2 4 6 5 5 7 6 3 5 3 7 4 4 3 4 8 4 7 8 6 7 5 8 4 5 7 4 4 7 5 5 6 7 4 4 6 7 7 7 8 6 5 4 5 6 5 3 6 7 5 5 7 4 5 5 3 6 5 3 5 6 6 3 5 5 3 3 2 4 1 4 1 5 2 0 1 2 0)
(list 3 3 0 1 0 4 2 3 3 4 1 4 1 5 2 3 2 6 2 5 6 3 6 3 4 7 5 4 5 7 7 7 6 4 5 4 8 5 4 7 8 7 8 6 5 5 5 7 5 5 8 5 8 4 8 7 5 7 7 4 4 6 4 8 8 8 6 6 4 5 7 7 5 6 3 3 4 5 5 6 4 5 4 2 5 2 6 4 3 1 1 5 2 3 1 4 1 4 4)
(list 2 0 4 4 2 4 5 5 2 4 1 3 3 5 3 4 5 6 3 2 5 4 3 5 4 6 4 5 7 3 4 4 7 4 5 4 5 8 6 8 8 8 4 4 4 4 7 7 6 5 7 4 6 8 8 7 7 5 5 4 5 8 6 4 4 8 4 7 7 3 5 7 5 5 7 7 7 7 2 4 2 4 6 5 5 5 5 1 1 5 4 5 4 2 4 2 2 3 4)
(list 1 0 0 0 0 3 1 3 2 4 4 3 5 5 2 5 6 3 4 5 2 6 7 4 3 6 4 5 5 5 6 4 7 6 8 8 7 7 8 5 7 4 6 5 7 6 5 8 6 5 7 6 5 7 6 7 7 8 4 5 5 5 6 8 5 6 8 7 4 4 4 6 7 6 5 7 7 5 3 4 6 6 6 4 2 3 5 4 5 3 3 2 1 5 1 4 3 1 1)
(list 4 2 1 1 2 2 2 3 1 1 3 4 1 3 6 6 2 4 5 2 3 3 7 5 7 7 4 5 6 7 5 4 6 5 6 7 7 7 7 4 5 5 7 6 8 7 6 5 9 5 8 7 8 7 8 9 4 5 5 7 5 7 5 5 6 4 7 8 8 7 5 3 3 3 5 7 6 6 5 5 2 6 4 6 4 5 3 5 5 4 5 5 3 2 4 4 3 1 3)
(list 2 2 0 2 3 1 2 5 4 2 3 4 4 5 4 6 6 6 2 6 3 7 3 3 6 3 3 5 5 3 4 4 5 8 6 7 4 5 7 8 4 8 6 9 5 7 5 6 6 7 8 8 9 8 8 9 7 9 6 7 8 5 6 8 5 6 8 8 6 7 6 6 7 5 5 6 5 6 6 5 4 2 2 6 4 2 5 6 4 2 3 1 4 3 2 4 4 2 4)
(list 3 0 3 3 1 4 2 5 4 1 5 1 4 5 6 4 4 2 3 4 6 6 3 7 4 6 4 3 3 5 8 6 4 4 6 7 8 6 6 6 5 9 6 6 5 7 9 6 9 6 7 6 5 5 7 6 6 5 7 6 8 4 5 4 5 7 8 4 4 8 8 4 4 6 6 6 6 5 6 4 3 4 6 6 5 5 4 3 4 2 3 2 5 2 3 1 5 1 1)
(list 0 0 1 5 5 4 1 1 2 5 1 3 5 6 6 3 3 2 4 3 6 5 7 3 6 4 3 7 7 8 5 6 6 7 8 4 6 4 7 6 6 5 8 7 5 9 8 5 8 9 6 9 9 9 5 8 7 8 7 9 5 8 7 7 6 8 6 4 7 8 4 7 6 4 4 4 6 7 7 3 6 7 4 4 3 3 3 5 2 6 5 5 5 4 2 2 1 1 4)
(list 0 3 2 2 2 2 5 3 1 1 3 5 6 4 5 3 5 6 6 4 3 3 6 3 4 5 4 8 4 6 5 8 5 6 6 7 6 5 7 7 7 5 7 8 8 5 8 8 9 6 7 6 8 7 5 7 9 9 5 5 5 9 6 7 8 7 7 5 5 5 8 6 6 8 5 6 3 4 7 4 7 7 2 4 2 5 6 6 3 5 1 5 5 5 1 4 3 4 1)
(list 2 0 0 3 3 5 5 5 1 2 4 4 3 6 6 5 5 4 3 7 5 6 4 7 5 5 8 6 6 7 8 5 8 4 8 8 6 8 7 8 7 5 6 7 7 8 6 7 6 6 6 5 6 7 5 6 9 6 9 9 8 9 8 8 9 8 5 5 5 4 4 8 5 8 6 5 7 5 7 6 7 7 5 5 6 6 4 3 3 5 3 5 5 4 5 3 3 5 1)
(list 0 1 5 5 2 3 5 5 5 2 5 6 5 4 5 6 5 3 5 7 4 4 5 5 6 3 5 7 6 6 6 4 5 5 6 7 9 7 7 5 7 8 9 6 9 8 7 9 6 6 9 7 6 9 6 7 5 7 8 7 6 8 6 9 6 8 8 4 8 5 7 8 5 8 7 6 5 4 4 5 3 5 7 3 6 2 3 4 3 6 5 2 3 3 1 3 2 4 5)
(list 1 2 2 4 1 3 1 5 4 3 5 4 3 4 5 4 2 7 4 7 7 4 6 4 6 8 6 6 6 5 7 6 6 8 5 7 7 6 6 7 6 9 8 9 7 6 5 6 9 9 9 7 6 6 9 8 8 9 6 9 5 9 9 5 5 8 6 6 8 4 4 5 5 5 7 4 7 5 4 4 4 4 5 6 4 4 2 2 3 6 2 2 5 3 4 1 3 4 2)
(list 2 3 2 5 1 3 3 3 1 2 4 2 5 5 6 2 3 6 4 7 6 7 3 6 3 4 6 4 8 4 4 7 7 8 6 5 7 5 5 5 7 6 7 9 6 9 8 7 9 6 8 7 9 6 7 8 7 7 8 8 5 5 9 8 9 8 7 6 8 8 6 8 4 4 7 6 4 5 6 6 7 5 7 5 5 2 2 6 2 3 6 4 5 1 1 5 2 5 5)
(list 1 5 5 1 1 5 5 1 3 3 4 3 4 5 4 2 4 6 6 7 4 5 6 3 5 5 4 6 6 7 8 6 6 6 8 6 7 5 7 7 8 9 6 9 9 9 6 8 9 9 7 7 6 6 8 7 8 6 9 6 9 5 7 5 8 7 7 8 7 7 5 8 8 8 7 7 7 4 6 6 3 6 3 4 6 6 2 3 3 6 4 2 5 2 4 5 4 2 5)
(list 1 2 1 2 1 1 4 2 1 2 3 4 6 2 5 4 7 7 7 7 5 6 5 3 6 8 7 6 4 8 8 4 9 7 8 8 9 5 6 6 5 6 6 8 9 7 9 9 7 8 7 7 6 9 6 7 7 8 6 6 8 5 8 5 9 6 8 8 5 8 6 5 8 6 7 5 4 4 7 4 7 4 3 3 7 6 6 2 6 6 5 2 2 2 3 4 2 4 3)
(list 1 2 5 4 1 1 4 1 2 4 6 3 4 5 3 6 5 3 6 4 4 6 6 6 8 7 8 8 7 7 5 9 9 5 5 5 8 8 6 7 6 9 9 6 8 9 6 6 8 7 9 9 7 6 7 9 7 7 8 7 7 9 7 9 7 8 5 5 6 7 8 5 7 7 6 5 5 4 6 6 6 5 5 4 4 3 4 6 2 5 5 4 4 2 4 3 5 3 3)
(list 1 2 5 1 1 1 3 3 2 3 6 2 5 2 5 5 4 5 4 6 7 4 6 5 4 8 6 5 6 7 5 8 8 5 6 7 8 8 7 6 8 6 7 7 6 7 7 9 7 9 9 8 8 8 8 9 7 8 6 6 7 6 8 5 8 8 8 8 8 9 7 8 8 6 7 5 6 6 6 5 3 3 6 3 6 3 4 6 6 2 4 2 2 5 1 1 1 4 2)
(list 4 3 1 4 5 1 4 2 5 2 2 2 3 6 6 6 5 6 5 5 7 6 4 8 8 5 8 4 5 5 8 7 7 6 6 5 8 6 9 8 9 8 7 8 8 8 7 7 8 8 9 7 9 6 9 9 8 8 8 6 8 9 9 8 7 9 6 7 7 6 5 7 4 8 8 6 5 6 6 5 7 7 4 7 5 6 5 5 2 5 2 5 2 1 1 3 1 1 5)
(list 4 3 1 4 4 3 4 4 3 3 4 6 4 3 2 3 6 6 6 6 7 3 4 6 8 4 6 5 8 4 9 6 7 7 8 9 9 8 9 8 7 7 6 6 8 6 6 9 7 7 9 7 9 7 8 9 8 8 8 6 6 8 7 7 6 7 7 6 6 8 7 6 7 7 7 4 5 7 6 7 4 6 4 6 6 6 6 4 2 5 6 5 4 1 3 2 5 3 2)
(list 3 5 1 5 2 5 5 4 5 6 5 6 3 5 4 6 6 3 3 3 6 5 8 4 7 7 5 5 5 6 6 7 6 9 9 5 5 7 9 6 8 6 6 8 8 8 9 8 9 8 9 8 9 9 7 7 6 7 6 7 8 6 7 7 6 6 7 7 9 8 8 4 8 6 8 8 8 8 5 3 6 6 6 4 3 4 5 3 6 6 6 6 2 4 3 1 3 1 3)
(list 2 1 5 3 3 2 5 1 2 5 3 2 5 5 3 5 6 3 5 7 7 7 5 7 4 7 7 4 7 6 6 9 8 9 6 5 7 7 6 6 7 8 8 8 9 8 8 9 9 9 8 8 8 9 9 8 9 8 8 8 7 8 6 9 6 7 8 7 6 5 8 6 4 5 8 6 8 8 4 7 7 7 6 3 3 6 5 4 5 6 4 3 6 1 4 3 1 3 3)
(list 1 5 5 3 5 4 3 6 5 3 6 2 5 4 2 5 3 7 7 5 6 7 7 8 6 6 5 6 7 6 5 5 7 8 5 9 6 8 6 9 9 6 7 7 7 7 9 8 9 7 8 7 7 8 9 9 8 7 8 7 8 7 7 7 6 8 5 6 8 7 6 7 5 4 4 7 5 4 7 5 6 4 5 4 7 5 4 2 3 3 3 4 5 3 1 1 4 2 2)
(list 2 2 1 2 2 4 2 2 2 5 3 4 2 4 6 5 5 3 7 7 4 3 7 5 7 7 5 5 5 9 8 5 9 5 7 8 8 8 8 7 7 9 6 6 9 8 9 8 9 7 7 8 7 8 7 9 7 8 7 6 9 8 9 6 7 5 5 7 6 9 9 8 7 7 5 8 4 6 8 7 6 7 3 3 6 7 6 4 5 4 2 6 4 2 1 4 3 5 3)
(list 4 5 2 4 3 2 4 5 3 2 6 4 6 5 4 6 3 4 3 3 4 5 5 5 4 6 8 5 7 5 5 5 8 9 8 5 7 7 7 6 6 6 6 6 8 7 9 7 9 7 7 9 8 7 7 9 8 9 9 6 9 9 7 7 6 6 7 9 6 8 9 9 8 4 5 8 4 6 7 4 7 4 4 7 3 7 5 4 4 2 2 5 2 5 4 2 3 4 2)
(list 4 5 3 2 3 1 3 3 5 5 5 3 4 2 4 4 4 4 4 5 6 6 7 5 5 4 5 6 8 7 8 7 7 5 6 5 8 8 8 7 8 9 7 8 9 7 9 8 9 9 7 8 9 9 7 9 7 8 7 8 7 7 8 7 8 8 8 7 7 9 5 6 7 5 5 7 7 4 6 6 7 3 3 7 3 4 4 5 4 6 6 3 6 4 1 4 3 4 3)
(list 2 5 3 5 4 1 1 6 2 5 2 5 5 6 4 6 7 6 7 7 7 3 5 7 8 7 6 4 7 8 9 9 5 8 8 5 6 7 7 9 6 8 6 9 9 9 8 7 7 9 8 8 9 8 8 7 7 7 7 6 6 8 9 6 8 9 5 5 7 9 5 8 4 7 5 6 7 6 7 6 6 3 7 7 5 7 5 4 5 5 5 6 5 4 5 2 3 2 1)
(list 5 5 5 4 1 4 5 4 2 5 3 6 4 6 5 7 3 6 6 7 3 7 7 5 4 7 5 5 8 5 8 7 5 8 8 8 7 8 8 6 8 6 6 9 7 7 7 7 8 8 9 7 9 8 9 8 9 7 8 9 9 7 6 9 9 6 7 6 7 6 6 6 7 6 8 6 6 6 4 3 3 4 6 5 4 5 7 3 6 2 5 3 2 2 1 4 5 5 5)
(list 2 2 4 1 2 4 2 3 6 4 4 6 6 2 6 4 3 6 7 6 4 7 6 4 7 5 7 4 8 9 5 7 9 7 6 5 8 6 8 7 8 6 7 6 9 8 8 9 8 8 8 8 8 8 9 8 7 8 9 9 9 9 8 8 9 8 6 8 7 7 9 8 6 4 6 5 5 5 4 3 3 4 7 4 6 4 5 2 2 4 6 6 3 4 5 4 3 2 2)
(list 2 5 5 3 3 2 5 2 6 2 4 6 3 6 2 4 7 7 7 5 7 3 7 8 8 6 7 4 4 6 6 8 6 5 7 7 6 7 9 6 9 8 6 8 9 7 8 8 7 9 7 8 8 9 9 9 9 8 6 6 9 9 9 6 6 8 5 8 7 7 5 7 6 4 7 5 6 5 6 7 5 5 4 5 4 4 5 6 6 2 6 6 2 6 4 4 5 4 1)
(list 5 4 2 5 5 4 4 6 3 4 3 3 5 6 4 5 4 5 6 7 4 6 8 8 4 7 7 6 5 8 8 9 9 8 9 6 7 8 9 6 8 6 8 6 9 7 7 9 8 9 8 7 7 8 7 9 8 8 7 9 7 8 6 8 8 7 7 8 8 5 8 7 7 4 8 5 4 5 7 7 4 7 5 7 5 6 6 3 2 3 4 2 6 5 2 1 3 2 2)
(list 2 2 1 3 2 3 5 2 5 5 3 5 2 3 4 3 3 3 5 3 3 7 4 7 4 6 7 7 5 5 8 6 7 5 8 7 6 8 9 6 9 7 6 6 8 9 9 9 7 9 9 9 8 8 8 7 9 9 8 9 9 7 7 8 8 9 9 9 5 8 5 5 6 7 6 8 6 5 6 3 6 5 6 6 3 3 6 6 5 2 6 3 6 3 1 4 3 2 4)
(list 1 4 2 1 5 3 3 4 4 2 5 5 4 2 4 5 3 5 5 6 3 5 8 6 5 6 5 7 7 6 8 9 6 7 6 9 7 7 9 7 7 6 7 8 9 8 7 7 7 7 7 7 8 9 8 6 6 8 7 6 9 7 9 7 6 5 6 6 8 5 7 8 8 4 6 4 5 5 4 6 4 7 7 4 7 5 4 3 3 2 3 5 2 3 2 2 5 2 4)
(list 4 5 5 1 4 4 1 4 3 4 6 6 2 6 6 7 6 6 6 4 6 7 7 5 4 8 6 4 6 4 9 8 8 7 6 6 5 7 7 9 8 6 7 9 6 7 8 6 6 9 7 7 6 8 9 7 7 8 8 8 7 6 9 9 9 7 7 5 9 8 5 4 4 5 8 6 7 4 3 7 6 3 5 4 7 4 4 4 3 4 3 5 5 3 2 5 1 3 2)
(list 3 5 4 2 3 3 5 4 2 5 4 2 5 3 3 5 7 4 4 3 5 4 7 7 7 8 6 6 7 4 6 5 8 7 5 6 9 8 9 9 6 9 6 8 9 6 7 8 7 9 8 9 7 8 7 9 9 7 7 6 7 8 8 6 7 7 7 6 6 9 5 7 5 5 4 7 7 7 3 3 7 5 7 5 3 4 2 5 4 3 3 3 2 1 3 4 3 5 2)
(list 3 1 4 3 2 2 2 2 6 5 5 2 4 2 3 4 4 5 6 7 4 3 6 7 6 5 6 8 5 5 8 9 5 7 9 5 6 6 8 7 7 6 7 9 9 7 8 6 9 9 7 6 7 7 9 9 6 6 9 7 8 6 9 5 8 6 8 9 9 6 5 4 6 8 4 5 7 8 7 5 4 3 3 7 5 6 6 3 4 3 3 2 6 2 3 1 5 3 1)
(list 3 5 5 3 1 2 1 4 2 4 2 2 3 2 2 2 7 5 3 4 3 7 7 5 8 6 8 8 7 6 6 8 6 5 7 7 8 7 9 5 6 7 9 6 6 8 8 8 9 9 8 6 8 7 6 7 9 7 9 7 8 9 5 9 9 7 6 5 8 5 7 6 7 6 5 4 6 8 6 7 7 5 3 7 3 2 6 5 5 2 5 4 6 4 4 4 2 4 1)
(list 2 3 5 2 5 2 5 3 5 4 2 2 5 5 4 6 6 7 3 6 6 4 5 3 8 4 8 6 7 4 8 5 5 7 9 5 7 8 8 7 5 8 9 8 9 7 7 8 9 9 6 6 9 7 8 9 7 6 8 7 7 5 6 8 9 7 9 7 5 4 6 8 5 6 4 8 8 5 5 4 3 3 5 3 3 3 4 4 5 5 5 2 2 1 5 2 2 4 2)
(list 3 3 3 2 2 5 4 2 2 3 4 2 6 6 6 5 5 4 3 7 4 4 3 3 8 4 8 5 4 6 7 7 9 9 5 7 5 7 5 5 8 9 7 6 8 8 7 7 9 7 8 7 6 6 6 9 6 6 9 7 5 5 7 7 9 6 9 6 7 6 5 4 7 5 7 6 8 4 3 3 7 5 5 7 6 4 5 5 2 2 5 5 1 2 1 5 1 3 4)
(list 3 3 5 1 3 1 2 3 5 5 5 5 5 6 3 2 6 7 7 4 5 4 5 5 6 6 8 5 4 4 8 7 5 8 5 9 9 9 8 7 9 6 8 9 7 9 8 6 6 9 7 9 7 6 9 6 8 9 5 7 7 7 8 6 7 5 9 5 7 4 5 4 4 8 8 4 6 3 5 4 6 3 5 7 3 4 6 4 2 4 2 3 4 5 1 1 4 3 4)
(list 0 1 1 3 2 1 5 4 5 4 3 2 2 6 4 3 6 3 5 6 5 3 6 7 4 4 8 5 7 6 7 6 5 6 6 8 9 7 7 9 5 8 6 6 7 9 6 9 8 8 9 6 8 7 6 7 6 7 7 5 8 5 5 6 8 7 5 6 5 8 8 5 8 5 7 5 4 3 4 7 3 3 3 5 4 4 3 2 5 5 3 1 3 1 2 2 5 1 2)
(list 4 4 1 2 4 1 1 3 1 5 6 3 2 5 4 4 4 5 3 4 3 7 7 5 3 3 6 8 4 5 6 6 7 4 6 7 9 9 6 5 8 9 6 9 7 6 6 5 9 5 8 6 8 7 5 9 9 8 6 5 8 6 8 6 9 5 5 4 6 7 7 4 8 4 5 3 7 5 6 7 5 6 4 4 5 3 5 3 6 4 6 1 3 4 3 5 1 1 3)
(list 2 3 3 5 5 5 4 3 4 2 3 4 6 4 4 5 6 5 3 5 6 4 5 6 6 4 6 5 7 8 5 8 7 4 8 8 8 5 5 9 8 9 8 8 8 6 8 8 9 9 7 8 6 6 8 8 6 8 9 6 8 7 8 7 9 8 6 7 8 8 7 4 6 8 8 7 7 4 7 3 4 6 6 2 5 4 3 3 3 6 4 2 2 3 2 5 1 2 4)
(list 1 3 4 5 2 2 1 4 2 1 1 2 4 4 6 6 3 4 2 6 7 6 7 3 3 7 3 5 5 7 5 4 4 6 4 4 6 5 9 9 7 8 8 6 6 5 7 7 6 6 7 9 6 5 5 7 6 7 6 8 6 7 7 6 7 4 4 6 8 5 4 8 7 5 3 4 6 7 5 7 6 5 2 5 2 6 4 4 2 2 1 1 1 5 5 1 3 4 2)
(list 4 4 0 2 3 4 2 3 2 5 1 2 6 6 5 2 4 2 5 6 4 4 7 6 6 5 5 5 7 8 6 7 8 6 5 6 4 8 7 5 9 6 7 6 5 5 9 5 6 9 6 6 6 7 8 5 7 9 8 9 5 9 8 8 7 6 8 8 6 7 6 4 8 4 5 3 6 6 6 3 3 3 3 4 6 3 4 2 2 3 5 2 2 1 3 5 2 4 1)
(list 2 0 1 1 2 3 3 3 3 2 3 1 5 3 4 4 3 4 6 4 5 5 5 4 5 5 3 3 4 5 6 7 4 6 7 7 5 7 8 4 5 9 7 7 9 6 7 7 7 6 6 7 7 7 7 9 6 9 6 7 7 5 4 4 7 7 5 5 6 5 6 7 5 7 3 4 4 5 6 7 3 4 5 2 3 3 4 5 4 3 5 4 1 1 5 1 5 1 0)
(list 3 3 1 0 1 2 1 1 3 3 5 1 6 6 2 6 2 4 2 5 5 3 3 6 7 6 6 4 5 7 4 5 4 7 6 8 7 8 8 5 8 7 5 9 9 5 8 8 8 8 7 7 9 6 9 8 5 8 9 5 6 7 4 4 4 5 6 5 4 4 4 4 3 4 4 4 5 4 4 4 7 4 4 4 5 6 6 4 5 2 5 2 2 3 4 3 3 3 2)
(list 2 2 4 0 1 2 5 1 1 1 3 5 1 4 2 4 3 2 3 4 6 4 5 6 7 6 7 5 6 3 3 6 6 6 7 4 8 8 4 5 8 4 6 4 4 5 8 7 8 8 6 7 7 6 8 5 5 5 6 6 7 4 8 8 6 4 4 5 8 7 6 6 6 7 3 5 3 3 5 7 3 4 5 6 2 3 3 2 4 5 5 5 2 4 2 2 4 1 2)
(list 4 2 1 2 3 2 2 5 5 4 2 3 3 6 4 2 5 6 4 5 5 2 6 6 3 6 4 3 5 5 4 5 5 6 4 8 5 8 8 7 6 4 7 8 8 6 8 8 8 4 5 5 8 8 8 7 4 6 8 4 8 5 8 7 5 7 4 8 5 4 4 5 3 3 4 7 7 3 5 4 3 6 3 5 4 4 6 2 4 4 3 2 3 1 4 5 4 2 4)
(list 3 3 1 1 0 0 5 3 5 3 1 5 2 5 6 3 4 3 4 6 2 5 6 3 7 4 3 6 7 3 4 3 5 6 4 7 8 5 6 4 7 6 8 7 4 8 6 6 7 6 6 4 4 6 4 4 4 6 8 8 6 4 4 4 5 8 8 5 3 5 6 4 5 6 5 3 7 6 5 2 6 5 3 5 3 3 4 2 4 2 2 5 4 2 4 1 4 0 2)
(list 4 0 0 4 3 2 1 4 1 3 1 3 3 5 5 4 2 3 4 4 3 4 4 4 3 6 5 5 4 7 6 5 4 6 4 8 8 6 7 8 5 5 7 6 6 4 4 8 7 5 5 5 5 5 4 6 4 6 5 5 6 7 8 7 6 8 8 7 3 7 3 4 3 7 4 3 4 6 6 3 5 4 3 4 5 3 5 5 1 5 1 4 3 5 2 1 1 1 2)
(list 2 1 3 1 1 4 0 3 5 4 4 1 5 4 2 5 6 6 3 4 2 5 5 4 4 5 5 5 4 6 3 3 4 3 4 6 6 6 5 8 4 4 7 7 5 7 6 7 6 6 6 6 7 4 7 8 4 5 7 7 5 6 4 7 5 6 5 5 7 6 6 4 6 6 3 5 2 3 5 3 4 2 4 5 4 4 2 3 5 1 1 2 1 1 4 0 4 1 3)
(list 3 1 2 1 4 0 1 5 1 1 3 4 4 3 2 2 6 6 2 5 2 4 5 6 3 5 6 3 3 4 5 6 6 4 4 4 7 6 5 4 8 4 4 7 4 4 7 4 5 5 8 8 6 6 8 7 6 8 4 4 8 4 5 6 7 6 5 7 6 7 4 7 5 3 3 6 2 3 5 2 5 4 3 5 6 4 2 3 5 2 2 4 4 4 2 2 2 4 0)
(list 1 1 0 1 1 4 3 0 4 5 2 4 1 1 1 1 2 4 3 6 6 5 3 2 5 5 4 4 5 7 4 3 5 4 5 4 5 4 4 4 8 4 4 6 5 4 6 4 8 5 6 7 7 4 5 7 7 6 7 8 6 4 7 7 3 7 4 6 7 5 7 6 5 6 6 3 2 2 6 3 5 6 5 2 2 2 4 2 1 1 1 4 2 3 4 0 1 1 4)
(list 4 0 3 2 4 1 2 4 4 3 3 5 2 1 4 5 5 1 2 3 6 4 3 4 5 5 4 4 3 3 6 4 6 6 4 3 5 7 6 7 5 6 5 6 7 8 4 6 5 8 8 6 8 8 4 4 4 5 5 7 7 3 6 3 7 7 3 5 3 7 7 3 4 3 3 6 6 4 2 6 6 6 4 1 1 4 3 5 1 1 4 1 4 0 0 3 0 2 2)
(list 0 4 3 1 4 4 1 4 1 4 2 5 4 3 4 2 1 2 5 3 4 3 5 5 2 2 4 4 5 5 3 6 5 6 5 6 4 3 3 4 6 7 6 4 4 5 3 4 3 5 7 6 6 6 3 3 7 3 5 3 7 4 6 5 5 6 3 3 7 3 3 7 2 4 5 6 5 4 2 2 3 6 2 5 4 1 2 2 3 5 5 5 1 4 1 2 3 1 2)
(list 2 0 0 0 0 2 1 2 2 0 3 1 4 4 2 2 4 4 2 2 4 6 3 5 6 5 6 3 2 5 4 7 5 4 4 5 5 5 5 4 4 5 4 3 3 3 6 6 5 4 3 3 5 3 4 3 7 3 4 3 7 5 3 4 5 7 4 5 5 7 7 4 4 3 5 3 5 5 2 2 5 3 2 1 1 4 5 5 3 5 3 1 4 0 2 4 0 0 4)
(list 2 3 3 0 3 3 2 2 2 2 2 3 2 3 4 1 5 3 5 3 2 4 5 6 4 5 5 5 4 5 2 2 3 4 6 6 6 5 7 3 7 5 3 4 6 7 5 5 4 3 7 3 4 4 7 7 6 3 6 5 6 7 3 6 3 4 3 6 5 3 2 4 2 6 5 5 4 3 6 6 2 5 4 5 4 4 4 3 5 5 3 1 0 0 1 1 2 2 0)
(list 1 0 4 2 1 3 0 3 2 4 3 4 1 4 3 3 5 3 1 2 2 2 2 6 4 6 5 3 4 2 6 4 5 6 4 4 3 7 4 5 4 7 6 5 6 6 3 7 3 7 5 7 5 5 7 3 7 3 4 5 7 6 5 7 7 5 6 4 2 5 6 3 4 5 5 2 4 4 3 4 3 5 2 2 2 3 5 1 2 2 1 4 3 4 1 4 0 1 0)
(list 2 2 1 3 0 0 2 1 0 1 0 3 2 2 5 2 3 1 2 2 1 5 4 6 3 4 2 6 4 3 3 6 2 3 3 2 7 6 5 6 6 3 7 3 3 4 7 3 4 3 6 4 7 6 4 7 4 6 5 3 6 7 4 4 7 5 5 6 2 5 4 2 5 6 4 2 2 6 5 1 1 4 5 3 1 4 1 4 5 0 4 3 2 4 1 0 4 0 3)
(list 0 0 1 0 0 2 4 3 3 4 4 4 1 3 3 1 5 4 4 3 2 1 2 2 5 2 3 2 2 6 4 6 2 5 3 2 3 2 3 5 6 3 4 5 5 3 3 4 5 7 6 7 7 6 6 3 3 5 6 4 5 3 5 4 3 6 4 4 2 6 5 4 6 4 4 3 5 2 2 4 2 5 3 2 1 2 4 5 0 0 4 1 1 1 2 2 0 2 0)
(list 1 0 1 0 1 0 4 1 2 1 3 3 3 0 1 3 1 4 2 5 2 1 3 1 1 4 6 3 3 2 2 6 5 3 4 3 5 3 6 2 4 5 4 5 5 4 7 6 5 5 3 6 3 5 7 7 5 5 6 4 5 6 4 3 6 6 2 6 4 2 6 5 2 4 3 2 4 4 2 3 5 5 4 5 3 5 1 2 4 4 3 1 4 3 0 2 2 2 3)
(list 3 3 1 0 0 4 1 3 0 0 4 1 2 1 1 3 1 4 3 5 4 3 5 3 3 1 2 6 6 3 3 2 5 2 5 3 2 3 3 3 5 6 5 2 5 2 5 5 4 3 3 4 7 4 2 4 5 4 2 2 6 2 5 2 5 4 3 4 4 3 3 5 3 3 4 5 5 5 1 5 2 3 5 3 2 4 1 4 3 1 0 3 2 1 2 2 2 2 0)
(list 1 1 0 3 3 2 3 0 2 4 2 4 2 4 1 3 1 1 5 4 2 1 3 2 2 4 5 5 3 5 5 2 2 4 4 3 5 4 5 4 6 3 4 4 5 5 6 2 6 5 6 5 5 2 5 2 3 5 4 2 6 5 3 5 6 3 6 5 5 4 5 3 2 3 3 3 2 3 2 1 1 3 5 4 4 1 3 3 3 4 4 3 1 4 4 0 3 0 0)
(list 3 1 0 0 0 2 1 3 3 1 2 2 1 1 2 1 1 4 2 4 3 5 2 4 1 4 2 2 5 1 3 5 5 5 6 5 4 5 5 6 3 5 6 2 6 6 5 3 4 6 4 4 6 2 3 5 2 5 5 5 2 4 3 4 4 6 6 6 5 6 3 4 4 3 5 4 5 5 1 5 3 5 4 1 1 3 1 1 2 2 1 0 0 2 3 1 0 3 1)
(list 2 2 1 0 1 3 0 3 4 3 4 0 1 0 1 1 2 1 2 4 2 2 1 4 4 5 5 2 5 3 3 5 5 2 6 4 2 5 2 4 4 5 6 5 4 4 4 6 3 5 6 3 6 3 3 4 6 4 6 6 5 4 2 3 2 3 3 2 2 5 4 3 1 5 5 3 2 1 3 5 3 1 2 3 0 1 2 0 1 2 1 4 3 0 2 0 0 3 1)
(list 3 1 2 3 2 3 0 3 1 2 2 3 3 2 1 2 4 0 4 4 5 3 1 1 4 2 4 5 2 5 2 4 1 1 3 6 5 5 4 5 4 3 3 5 3 5 4 4 6 5 5 5 4 3 3 5 6 3 2 4 4 2 4 4 2 2 2 4 2 4 3 3 1 5 5 4 3 3 4 2 4 3 0 2 1 3 4 4 1 2 2 0 2 1 0 3 1 0 3)
(list 2 0 0 3 3 1 1 0 3 2 2 2 2 3 2 4 3 0 3 1 2 3 1 1 5 2 3 1 3 1 4 2 2 2 1 5 2 4 2 5 4 6 5 2 4 3 5 4 4 5 2 6 4 5 2 4 3 2 2 6 4 5 5 5 2 3 5 5 2 5 3 1 1 4 1 1 3 4 1 2 1 0 4 4 4 2 0 0 2 1 3 0 3 2 3 0 3 2 1)
(list 0 0 3 2 2 1 0 3 2 3 2 0 3 3 4 2 3 1 3 2 3 4 3 4 3 1 1 5 4 3 3 1 3 5 4 4 4 2 1 2 5 6 3 6 6 6 2 6 3 3 6 5 4 5 5 3 3 5 3 2 5 2 3 3 2 4 2 5 3 5 3 4 2 5 5 5 5 4 2 1 1 1 1 0 4 3 2 3 2 0 0 3 0 0 0 1 3 2 0)
(list 0 0 2 0 0 1 2 1 3 0 3 0 4 1 0 0 3 1 1 2 1 1 1 1 1 3 1 1 2 1 1 4 2 3 2 2 4 5 2 3 5 4 1 1 3 1 2 2 3 3 2 2 3 5 3 3 4 4 1 1 2 3 3 4 5 3 2 3 4 4 1 1 3 4 1 4 3 1 4 2 3 4 0 0 4 1 3 1 1 2 0 3 2 1 3 0 3 2 1)
(list 2 1 1 2 0 3 3 3 1 3 2 3 1 1 4 3 2 2 4 1 1 1 4 2 4 2 1 2 3 4 4 2 4 5 5 5 3 1 5 4 3 2 3 4 4 2 4 3 2 5 4 5 1 2 4 3 3 3 1 2 1 2 2 5 2 4 3 1 1 4 4 3 2 1 5 3 2 0 3 0 0 4 2 0 4 4 3 4 1 0 3 1 2 3 1 3 3 3 0)
(list 1 2 1 2 0 3 0 3 0 2 1 0 3 0 3 4 4 3 0 0 4 1 3 4 2 4 2 3 3 1 3 5 4 2 2 5 4 2 5 4 1 1 4 1 2 1 5 3 2 2 3 4 5 4 4 2 4 4 2 3 4 5 3 4 5 5 4 4 5 4 1 1 5 3 1 2 0 0 3 4 0 2 4 3 1 4 0 3 2 1 3 3 0 1 3 2 3 0 0)
(list 0 2 0 0 1 3 2 0 3 1 3 3 2 0 3 1 2 2 0 3 3 3 4 1 4 2 2 1 4 2 2 4 1 3 3 4 2 2 5 5 3 4 1 1 4 1 1 5 4 3 3 1 1 1 1 2 2 1 3 5 1 5 2 5 2 1 2 1 1 3 2 2 3 3 2 3 3 3 1 1 1 2 3 0 1 1 1 3 0 3 3 1 3 3 0 1 0 1 1)
(list 1 0 0 1 2 2 1 3 1 0 0 0 2 1 1 0 3 4 2 2 3 3 0 1 0 3 4 0 1 2 4 1 5 3 2 2 2 3 4 1 2 2 1 5 4 1 4 3 5 2 2 3 1 3 2 3 5 5 4 5 2 5 5 1 3 4 1 5 5 1 4 3 1 2 2 0 0 0 3 2 1 2 4 2 0 1 0 0 3 2 1 3 2 1 1 2 0 1 0)
(list 0 2 2 2 1 0 1 3 0 0 0 0 1 3 1 1 2 1 1 0 0 4 2 0 2 0 3 4 1 1 4 3 1 3 1 2 4 3 3 1 2 3 1 4 4 3 3 5 2 5 4 4 5 1 4 5 4 4 2 1 4 3 5 4 5 5 3 3 3 1 4 2 2 0 0 1 0 4 1 3 2 0 1 0 1 1 3 1 1 1 1 2 2 2 2 2 1 2 1))))
(defun row (row arr)
(declare (type array arr) (type fixnum row))
(loop :for i :from 0 :below (car (array-dimensions arr))
:collect (aref arr row i)))
(defun column (column arr)
(declare (type array arr) (type fixnum column))
(loop :for i :from 0 :below (second (array-dimensions arr))
:collect (aref arr i column)))
(defun visible (row column &optional (problem-input +problem-8-input+))
(destructuring-bind (n m) (array-dimensions problem-input)
(let* ((current-row (row row problem-input))
(current-column (column column problem-input))
(current (aref problem-input row column))
(top-max
(apply #'max (subseq current-column 0 row)))
(bottom-max
(apply #'max (subseq current-column (1+ row))))
(left-max
(apply #'max (subseq current-row 0 column)))
(right-max
(apply #'max (subseq current-row (1+ column)))))
(or (> current top-max)
(> current bottom-max)
(> current left-max)
(> current right-max)))))
(defun part1 (&optional (problem-input +problem-8-input+))
(let ((visible 0))
(destructuring-bind (n m) (array-dimensions problem-input)
(loop :for i :from 1 :below (1- n)
:do (loop :for j :from 1 :below (1- m)
:if (visible i j problem-input)
:do (incf visible)))
(+ visible 4 (* 2 (- n 2)) (* 2 (- m 2))))))
(defun furthest (l &key from direction)
(declare (type list l) (type fixnum from) (type symbol direction))
(let ((current (nth from l))
(distance 0))
(cond
((or (eq direction 'top)
(eq direction 'left))
(loop :for i :downfrom (1- from) :to 0
:do (progn
(incf distance)
(when (<= current (nth i l))
(return))))
distance)
((or (eq direction 'bottom)
(eq direction 'right))
(loop :for i :from (1+ from) :to (1- (length l))
:do (progn
(incf distance)
(when (<= current (nth i l))
(return))))
distance)
(t
(error (format nil "Unknown direction ~a~%" direction))))))
(defun view-distance (row column &optional (problem-input +problem-8-input+))
(destructuring-bind (n m) (array-dimensions problem-input)
(let* ((current-row (row row problem-input))
(current-column (column column problem-input))
(view-top (furthest current-column :from row :direction 'top))
(view-bottom (furthest current-column :from row :direction 'bottom))
(view-left (furthest current-row :from column :direction 'left))
(view-right (furthest current-row :from column :direction 'right)))
(* view-top view-bottom view-left view-right))))
(defun part2 (&optional (problem-input +problem-8-input+))
(destructuring-bind (n m) (array-dimensions problem-input)
(loop :for i :from 0 :below n
:append (loop :for j :from 0 :below m
:collect (view-distance i j problem-input)))))
|