(wat-aro)

生きてます

2016-01-11から1日間の記事一覧

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)…

SICP 問題 4.40

人の階への割り当ての組みは,相異なるという要求の前では55通りある. 要求の後では5!通りになる. ambで生成してすぐにテストすることで効率的な手続き (define (multiple-dwelling) (let ((baker (amb 1 2 3 4 5))) (require (not (= baker 5))) (let ((c…

SICP 問題 4.39

制限の順番は解には影響しないが,その時間には影響する. 失敗が多い制限ほど先にテストするほうが実行速度は速くなる. ;; 本来のmultiple-dwelling (define (multiple-dwelling) (let ((baker (amb 1 2 3 4 5)) (cooper (amb 1 2 3 4 5)) (fletcher (amb …

SICP 問題 4.38

これを手で解けとな... B≠5 C≠1 F≠1 F≠5 C C≠5 |F-C| ≠ 1 答えは5通り. 計算機プログラムの構造と解釈 第2版作者: ハロルドエイブルソン,ジュリーサスマン,ジェラルド・ジェイサスマン,Harold Abelson,Julie Sussman,Gerald Jay Sussman,和田英一出版社/…

SICP 問題 4.37

(define (a-pythagorean-triple-between low high) (let ((i (an-integer-between low high)) (hsq (* high high))) (let ((j (an-integer-between i high))) (let ((ksq (+ (* i i) (* j j)))) (require (>= hsq ksq)) (let ((k (sqrt ksq))) (require (int…

SICP 問題 4.36

(define (a-pythagorean-triple-between low high) (let ((i (an-integer-between low high))) (let ((j (an-integer-between i high))) (let ((k (an-integer-between j high))) (require (= (+ (* i i) (* j j)) (* k k))) (list i j k))))) ;; an-integer…

SICP 問題 4.35

二つの与えられた限界の間の整数を返す手続き (define (an-integer-between low high) (require (<= low high)) (amb low (an-integer-between (+ low 1) high))) 計算機プログラムの構造と解釈 第2版作者: ハロルドエイブルソン,ジュリーサスマン,ジェラル…