|
23 | 23 | (defvar houses-by-number nil)
|
24 | 24 |
|
25 | 25 | (cl-defstruct house
|
26 |
| - number color owner pet drink smokes) |
| 26 | + number color owner pet drink hobby) |
27 | 27 |
|
28 | 28 | (setq all-houses
|
29 | 29 | (cl-loop for n in '(1 2 3 4 5)
|
30 | 30 | append (cl-loop for c in '(red green ivory yellow blue)
|
31 | 31 | append (cl-loop for o in '(Englishman Spaniard Ukrainian Norwegian Japanese)
|
32 | 32 | append (cl-loop for p in '(dog snails fox horse zebra)
|
33 | 33 | append (cl-loop for d in '(coffee tea milk orange-juice water)
|
34 |
| - append (cl-loop for s in '(Old-Gold Kools Chesterfields Lucky-Strike Parliaments) |
35 |
| - collect (make-house :number n :color c :owner o :pet p :drink d :smokes s)))))))) |
| 34 | + append (cl-loop for e in '(dancing painting reading football chess) |
| 35 | + collect (make-house :number n :color c :owner o :pet p :drink d :hobby e)))))))) |
36 | 36 |
|
37 | 37 | (setq house-constraints
|
38 | 38 | (list
|
|
44 | 44 | (equal (house-color h) 'green)))
|
45 | 45 | (lambda (h) (equal (equal (house-owner h) 'Ukrainian)
|
46 | 46 | (equal (house-drink h) 'tea)))
|
47 |
| - (lambda (h) (equal (equal (house-smokes h) 'Old-Gold) |
| 47 | + (lambda (h) (equal (equal (house-hobby h) 'dancing) |
48 | 48 | (equal (house-pet h) 'snails)))
|
49 |
| - (lambda (h) (equal (equal (house-smokes h) 'Kools) |
| 49 | + (lambda (h) (equal (equal (house-hobby h) 'painting) |
50 | 50 | (equal (house-color h) 'yellow)))
|
51 | 51 | (lambda (h) (equal (equal (house-drink h) 'milk)
|
52 | 52 | (= (house-number h) 3)))
|
53 | 53 | (lambda (h) (equal (equal (house-owner h) 'Norwegian)
|
54 | 54 | (= (house-number h) 1)))
|
55 |
| - (lambda (h) (equal (equal (house-smokes h) 'Lucky-Strike) |
| 55 | + (lambda (h) (equal (equal (house-hobby h) 'football) |
56 | 56 | (equal (house-drink h) 'orange-juice)))
|
57 | 57 | (lambda (h) (equal (equal (house-owner h) 'Japanese)
|
58 |
| - (equal (house-smokes h) 'Parliaments))) |
| 58 | + (equal (house-hobby h) 'chess))) |
59 | 59 | (lambda (h) (equal (= (house-number h) 2)
|
60 | 60 | (equal (house-color h) 'blue)))
|
61 | 61 | (lambda (h) (if (equal (house-color h) 'green)
|
|
86 | 86 | (= (house-number h1) (1+ (house-number h2)))
|
87 | 87 | t))
|
88 | 88 | (lambda (h1 h2)
|
89 |
| - (if (and (equal (house-smokes h1) 'Chesterfields) |
| 89 | + (if (and (equal (house-hobby h1) 'reading) |
90 | 90 | (equal (house-pet h2) 'fox))
|
91 | 91 | (next-door? h1 h2)
|
92 | 92 | t))
|
93 | 93 | (lambda (h1 h2)
|
94 |
| - (if (and (equal (house-smokes h1) 'Kools) |
| 94 | + (if (and (equal (house-hobby h1) 'painting) |
95 | 95 | (equal (house-pet h2) 'horse))
|
96 | 96 | (next-door? h1 h2)
|
97 | 97 | t))))
|
|
117 | 117 | (equal (house-owner h1) (house-owner h2))
|
118 | 118 | (equal (house-pet h1) (house-pet h2))
|
119 | 119 | (equal (house-drink h1) (house-drink h2))
|
120 |
| - (equal (house-smokes h1) (house-smokes h2))))) |
| 120 | + (equal (house-hobby h1) (house-hobby h2))))) |
121 | 121 |
|
122 | 122 | (defun extends? (street h)
|
123 | 123 | "Check if a house, H, can be added to a STREET."
|
|
0 commit comments