;;;; amb-dwelling.scm (require-extension amb amb-extras) ;; Baker, Cooper, Fletcher, Miller, and Smith live on different ;; floors of an apartment house that contains only five floors. Baker ;; does not live on the top floor. Cooper does not live on the bottom ;; floor. Fletcher does not live on either the top or the bottom ;; floor. Miller lives on a higher floor than does Cooper. Smith does not ;; live on a floor adjacent to Fletcher's. Fletcher does not live on a ;; floor adjacent to Cooper's. ;; ;; Where does everyone live? (define (solve-dwelling-puzzle) (let ((baker (amb 1 2 3 4 5)) (cooper (amb 1 2 3 4 5)) (fletcher (amb 1 2 3 4 5)) (miller (amb 1 2 3 4 5)) (smith (amb 1 2 3 4 5))) ;; They live on different floors. (required (distinct? (list baker cooper fletcher miller smith))) ;; Baker does not live on the top floor. (required (not (= baker 5))) ;; Cooper does not live on the bottom floor. (required (not (= cooper 1))) ;; Fletcher does not live on either the top or the bottom floor. (required (not (= fletcher 5))) (required (not (= fletcher 1))) ;; Miller lives on a higher floor than does Cooper. (required (> miller cooper)) ;; Smith does not live on a floor adjacent to Fletcher's. (required (not (= (abs (- smith fletcher)) 1))) ;; Fletcher does not live on a floor adjacent to Cooper's. (required (not (= (abs (- fletcher cooper)) 1))) `((baker ,baker) (cooper ,cooper) (fletcher ,fletcher) (miller ,miller) (smith ,smith))) )