問題3.72 – SICP(計算機プログラムの構造と解釈)その162

問題3.72

weighted-pairs 等の必要な手続きは問題3.70のものを使う。

(define (add-square-pairs-weight pair)
  (let ((i (car pair))
        (j (cadr pair)))
       (+ (square i) (square j))))

(define st (weighted-pairs integers integers add-square-pairs-weight))

(define (sum-of-squares-stream-way s)
  (let ((s1car (stream-car s))
        (s2car (stream-car (stream-cdr s)))
        (s3car (stream-car (stream-cdr (stream-cdr s)))))
       (let ((s1-weight (add-square-pairs-weight s1car))
             (s2-weight (add-square-pairs-weight s2car))
             (s3-weight (add-square-pairs-weight s3car)))
            (if (= s1-weight s2-weight s3-weight)
                (cons-stream s1-weight
                             (sum-of-squares-stream-way (stream-cdr s)))
                (sum-of-squares-stream-way (stream-cdr s))))))

(define sum-of-squares-stream
  (sum-of-squares-stream-way st))

(stream-head sum-of-squares-stream 10)
gosh> 325
425
650
725
845
850
925
1025
1105
1105
done
計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
«
»