(wat-aro)

生きてます

SICP 問題 4.41

多住居手続きをschemeで実装.

(use util.combinations)
(use srfi-1)
(define (multiple-dwelling)
  (filter (lambda (x)
            (let ((baker (first x))
                  (cooper (second x))
                  (fletcher (third x))
                  (miller (fourth x))
                  (smith (fifth x)))
              (and
               (not (= baker 5))
               (not (= cooper 1))
               (not (= fletcher 5))
               (not (= fletcher 1))
               (< cooper miller)
               (not (= (abs (- smith fletcher)) 1))
               (not (= (abs (- fletcher cooper)) 1)))))
          (permutations '(1 2 3 4 5))))