問題4.41 – SICP(計算機プログラムの構造と解釈)その214
2009年07月06日
問題4.41
手を抜いて、順列リストの生成には Gauche の permutations
手続き(Gauche ユーザリファレンス: 11.41 util.combinations – 組み合わせ)を利用する。
(use srfi-1) ; for filter (use util.combinations) ; for permutations (define (multiple-dwelling lis) (let ((baker (car lis)) (cooper (cadr lis)) (fletcher (caddr lis)) (miller (cadddr lis)) (smith (cadddr (cdr lis)))) (and (distinct? (list baker cooper fletcher miller smith)) (not (= baker 5)) (not (= cooper 1)) (not (= fletcher 5)) (not (= fletcher 1)) (> miller cooper) (not (= (abs (- smith fletcher)) 1)) (not (= (abs (- fletcher cooper)) 1))))) (define (distinct? items) (cond ((null? items) #t) ((null? (cdr items)) #t) ((member (car items) (cdr items)) #f) (else (distinct? (cdr items))))) (filter multiple-dwelling (permutations '(1 2 3 4 5))) gosh> ((3 2 4 5 1))
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542