| | 174 | |
| | 175 | |
| | 176 | ;;; p18 2.5 似ている製品 |
| | 177 | |
| | 178 | (defun transform-prefs (prefs) |
| | 179 | (labels ((items (prefs person) |
| | 180 | (mapcar #'car ($ prefs person))) |
| | 181 | (ratings (prefs person items) |
| | 182 | (mapcar #'(lambda (item) |
| | 183 | ($ prefs person item)) |
| | 184 | items)) |
| | 185 | (persons (prefs) |
| | 186 | (mapcar #'car prefs)) |
| | 187 | (all-items (prefs) |
| | 188 | (remove-duplicates |
| | 189 | (mapcan #'(lambda (person) |
| | 190 | (items prefs person)) |
| | 191 | (persons prefs)) |
| | 192 | :test #'string=))) |
| | 193 | (mapcar #'(lambda (item) |
| | 194 | (cons item |
| | 195 | (remove-if-not #'cdr |
| | 196 | (mapcar #'(lambda (person) |
| | 197 | (cons person ($ prefs person item))) |
| | 198 | (persons prefs))))) |
| | 199 | (all-items prefs)))) |
| | 200 | |
| | 201 | ;(transform-prefs *critics*) |
| | 202 | |
| | 203 | ;(let ((movies (transform-prefs *critics*))) |
| | 204 | ; (top-matches movies "Superman Returns")) |