Blob


1 ;; The first three lines of this file were inserted by DrScheme. They record metadata
2 ;; about the language level of this file in a form that our tools can easily process.
3 #reader(lib "htdp-advanced-reader.ss" "lang")((modname |32.3|) (read-case-sensitive #t) (teachpacks ((lib "draw.ss" "teachpack" "htdp") (lib "arrow.ss" "teachpack" "htdp") (lib "gui.ss" "teachpack" "htdp"))) (htdp-settings #(#t constructor repeating-decimal #t #t none #f ((lib "draw.ss" "teachpack" "htdp") (lib "arrow.ss" "teachpack" "htdp") (lib "gui.ss" "teachpack" "htdp")))))
4 ;tests enabled?
5 (define trueboard (list (vector (vector true)
6 (vector true true)
7 (vector true true true)
8 (vector true true true true)
9 (vector true true true true true)
10 (vector true true true true true true)
11 (vector true true false true true true true))
12 (vector (vector true)
13 (vector true true)
14 (vector true true true)
15 (vector true true true true)
16 (vector true true true true false)
17 (vector true true true true true true)
18 (vector true true true true true true true))
19 (vector (vector true)
20 (vector true true)
21 (vector true true true)
22 (vector true true true true)
23 (vector false true true true true)
24 (vector true true true true true true)
25 (vector true true true true true true true))
26 (vector (vector true)
27 (vector true true)
28 (vector true true false)
29 (vector true true true true)
30 (vector true true true true true)
31 (vector true true true true true true)
32 (vector true true true true true true true))
33 (vector (vector true)
34 (vector true true)
35 (vector true true true)
36 (vector true true true true)
37 (vector true true true true true)
38 (vector true true true true true true)
39 (vector true true true true false true true))
40 (vector (vector true)
41 (vector true true)
42 (vector false true true)
43 (vector true true true true)
44 (vector true true true true true)
45 (vector true true true true true true)
46 (vector true true true true true true true))
47 (vector (vector true)
48 (vector true true)
49 (vector false true true)
50 (vector true false false true)
51 (vector true false true false false)
52 (vector true false true true true true)
53 (vector false false true false false false true))
54 (vector (vector true)
55 (vector true true)
56 (vector false true true)
57 (vector true false false true)
58 (vector true false true true false)
59 (vector true true true false true true)
60 (vector false false true false false false true))))
62 (define falseboard (list (vector (vector true)
63 (vector true true)
64 (vector true true true)
65 (vector true true true true)
66 (vector true true false true true)
67 (vector true true true true true true)
68 (vector true true true true true true true))
69 (vector (vector true)
70 (vector true true)
71 (vector true true true)
72 (vector true true true true)
73 (vector true true false true true)
74 (vector true true true true true true)
75 (vector true true false true true true true))
76 (vector (vector true)
77 (vector true true)
78 (vector true true true)
79 (vector true true true true)
80 (vector true false true true true)
81 (vector true true true true true true)
82 (vector true true true true true true true))
83 (vector (vector true)
84 (vector true true)
85 (vector true true true)
86 (vector true true true true)
87 (vector true true true true true)
88 (vector true true true true true true)
89 (vector true false true true true true true))
90 (vector (vector true)
91 (vector true true)
92 (vector true true true)
93 (vector true true true true)
94 (vector true true true true true)
95 (vector true false true true true true)
96 (vector true true true true true true true))
97 (vector (vector true)
98 (vector true true)
99 (vector false true true)
100 (vector true false false true)
101 (vector true false true true true)
102 (vector true true true true true true)
103 (vector true true true true true true true))
104 (vector (vector true)
105 (vector true true)
106 (vector false true true)
107 (vector true false false true)
108 (vector true false true true true)
109 (vector true false true true true true)
110 (vector false false true true true true true))
111 (vector (vector true)
112 (vector true true)
113 (vector false true true)
114 (vector true false false true)
115 (vector true false true false false)
116 (vector true false false true true true)
117 (vector false false true true true true true))
118 (vector (vector true)
119 (vector true true)
120 (vector false true true)
121 (vector true false false true)
122 (vector true false true false false)
123 (vector true false false false true true)
124 (vector false false true false false false true))
125 (vector (vector true)
126 (vector true true)
127 (vector false true true)
128 (vector true false false true)
129 (vector true false true false false)
130 (vector true true false false true true)
131 (vector false false true false false false true))))
134 (define trueboard2 (list (vector (vector true)
135 (vector true true)
136 (vector true true true)
137 (vector true true true true)
138 (vector true true true true true)
139 (vector true true true true true true)
140 (vector true true false true false true true))
141 (vector (vector true)
142 (vector true true)
143 (vector true true true)
144 (vector true true true true)
145 (vector true true true true false)
146 (vector true true true true true true)
147 (vector true true true true true true true))))
149 (define trueboard3 (list (vector (vector true)
150 (vector true true)
151 (vector false true true)
152 (vector true true true true)
153 (vector true true true true true)
154 (vector true true true true true true)
155 (vector true true false true false true true))
156 (vector (vector true)
157 (vector true true)
158 (vector true true false)
159 (vector true true true true)
160 (vector true true true true false)
161 (vector true true true true true true)
162 (vector true true true true true true true))))
163 (define trueboard4 (list (vector (vector true)
164 (vector true true)
165 (vector false true true)
166 (vector true true true true)
167 (vector true true true true true)
168 (vector true true true true true true)
169 (vector true true false true false true true))
170 (vector (vector true)
171 (vector true true)
172 (vector true true false)
173 (vector true true true true)
174 (vector false true true true false)
175 (vector true true true true true true)
176 (vector true true true true true true true))))
178 (define falseboard2 (list (vector (vector true)
179 (vector true true)
180 (vector true true true)
181 (vector true true true true)
182 (vector true true false true true)
183 (vector true true true true true true)
184 (vector true true true true true true true))
185 (vector (vector true)
186 (vector true true)
187 (vector true true true)
188 (vector true true true true)
189 (vector true true false true true)
190 (vector true true true true true true)
191 (vector true true false true true true false))
192 (vector (vector true)
193 (vector true true)
194 (vector true true true)
195 (vector true true true true)
196 (vector true false true true true)
197 (vector true true true true true true)
198 (vector true true true true true false true))
199 (vector (vector true)
200 (vector true true)
201 (vector true true true)
202 (vector true true true true)
203 (vector true true true true true)
204 (vector true true true true false true)
205 (vector true false true true true true true))))
206 (define falseboard3 (list (vector (vector true)
207 (vector true true)
208 (vector true true true)
209 (vector true true true true)
210 (vector true true false true true)
211 (vector true true true true true true)
212 (vector true true true true true true true))
213 (vector (vector true)
214 (vector true true)
215 (vector true true true)
216 (vector true true true true)
217 (vector true true false true true)
218 (vector true true true true true true)
219 (vector true false false true true true false))
220 (vector (vector true)
221 (vector true true)
222 (vector true true true)
223 (vector true true true true)
224 (vector false false true true true)
225 (vector false true true true true true)
226 (vector true true true true true false true))
227 (vector (vector true)
228 (vector true true)
229 (vector true true true)
230 (vector true true true true)
231 (vector false true false true true)
232 (vector false true false true false true)
233 (vector true false false true true true true))))
234 (andmap (lambda (b) (enabled? (make-posn 3 5) b)) trueboard)
235 (andmap (lambda (b) (not (enabled? (make-posn 3 5) b))) falseboard)
236 (andmap (lambda (b) (enabled? (make-posn 7 7) b)) trueboard2)
237 (andmap (lambda (b) (enabled? (make-posn 1 1) b)) trueboard3)
238 (andmap (lambda (b) (enabled? (make-posn 1 7) b)) trueboard4)
239 (andmap (lambda (b) (not (enabled? (make-posn 7 7) b))) falseboard2)
240 (andmap (lambda (b) (not (enabled? (make-posn 1 7) b))) falseboard3)
242 ;Tests build-board
244 (equal? (build-board 5 (lambda (x y) true))
245 (vector
246 (vector true)
247 (vector true true)
248 (vector true true true)
249 (vector true true true true)
250 (vector true true true true true)))
251 (equal? (build-board 7 (lambda (x y)
252 (cond
253 [(<= (+ x y) 4) true]
254 [else false])))
255 (vector
256 (vector true)
257 (vector true true)
258 (vector true false false)
259 (vector false false false false)
260 (vector false false false false false)
261 (vector false false false false false false)
262 (vector false false false false false false false)))
264 (equal? (build-board 7 (lambda (x y)
265 (cond
266 [(<= (- y x) 2) true]
267 [else false])))
268 (vector
269 (vector true)
270 (vector true true)
271 (vector true true true)
272 (vector false true true true)
273 (vector false false true true true)
274 (vector false false false true true true)
275 (vector false false false false true true true)))
278 (define jumpboard (vector (vector true)
279 (vector true true)
280 (vector false true false)
281 (vector true true true true)
282 (vector false true true true false)
283 (vector true true true true true true)
284 (vector true true false true false true true)))
287 ;test enabled-pegs
288 (equal?
289 (enabled-pegs (vector (vector true)
290 (vector true true)
291 (vector false true true)
292 (vector true false false true)
293 (vector true false true false false)
294 (vector true true false false true true)
295 (vector false false true false false false true)))
296 (list
297 (make-posn 1 1)
298 (make-posn 1 2)
299 (make-posn 2 2)
300 (make-posn 3 3)
301 (make-posn 1 5)
302 (make-posn 1 6)
303 (make-posn 6 6)
304 (make-posn 7 7)))
306 ;test next-board
308 (define testboard2 (vector (vector true)
309 (vector true true)
310 (vector false true true)
311 (vector true false false true)
312 (vector true false true false false)
313 (vector true true false false true true)
314 (vector false false true false false false true)))
316 (equal? (next-board testboard2 (make-posn 1 1))
317 (list
318 (make-state
319 (vector
320 (vector false)
321 (vector false true)
322 (vector true true true)
323 (vector true false false true)
324 (vector true false true false false)
325 (vector true true false false true true)
326 (vector false false true false false false true))
327 (list (make-posn 1 1) (make-posn 1 3)))))
328 (equal? (next-board testboard2 (make-posn 1 2))
329 (list
330 (make-state
331 (vector
332 (vector true)
333 (vector false true)
334 (vector false false true)
335 (vector true false true true)
336 (vector true false true false false)
337 (vector true true false false true true)
338 (vector false false true false false false true))
339 (list (make-posn 1 2) (make-posn 3 4)))))
340 (equal? (next-board testboard2 (make-posn 2 2))
341 (list
342 (make-state
343 (vector
344 (vector true)
345 (vector true false)
346 (vector false false true)
347 (vector true true false true)
348 (vector true false true false false)
349 (vector true true false false true true)
350 (vector false false true false false false true))
351 (list (make-posn 2 2) (make-posn 2 4)))))
352 (equal? (next-board testboard2 (make-posn 3 1)) empty)
353 (equal?
354 (next-board testboard2 (make-posn 3 3))
355 (list
356 (make-state
357 (vector
358 (vector true)
359 (vector true true)
360 (vector true false false)
361 (vector true false false true)
362 (vector true false true false false)
363 (vector true true false false true true)
364 (vector false false true false false false true))
365 (list (make-posn 3 3) (make-posn 1 3)))
366 (make-state
367 (vector
368 (vector true)
369 (vector true true)
370 (vector false true false)
371 (vector true false false false)
372 (vector true false true false true)
373 (vector true true false false true true)
374 (vector false false true false false false true))
375 (list (make-posn 3 3) (make-posn 5 5)))))
377 (next-board INITIAL-BOARD (make-posn 1 3))