【SICP练习】139 练习3.70

练习3-70

原文

这里写图片描述

代码

(define (merge-weighted s1 s2 weight)
  (cond ((stream-null? s1) s2)
    ((stream-null? s2) s1)
    (else
     (let ((cars1 (stream-car s1))
           (cars2 (stream-car s2)))
       (cond ((< (weight cars1) (weight cars2))
          (cons-stream cars1
                   (merge-weighted (stream-cdr s1) s2 weight)))
         ((= (weight cars1) (weight cars2))
          (cons-stream cars1
                   (merge-weighted (stream-cdr s1) s2 weight)))
         (else (cons-stream cars2
                    (merge-weighted s1 (stream-cdr s2)
                            weight))))))))

(define (weighted-pairs s1 s2 weight)
  (cons-stream (list (stream-car s1) (stream-car s2))
           (merge-weighted (stream-map (lambda (x) (list (stream-car s1)
                                 x))
                       (stream-cdr s2))
                   (weighted-pairs (stream-cdr s1) (stream-cdr
                                s2)
                           weight)
                   weight)))

(define weight1 (lambda (x) (+ (car x) (cadr x))))

(define pairs1 (weighted-pairs integers integers weight1))

(define weight2 (lambda (x) (+ (* 2 (car x)) (* 3 (cadr x)) (* 5 (car x)
                                   (cadr x)))))

(define (divide? x y) (= (remainder y x) 0))

(define stream235 (stream-filter (lambda (x) (not (or (divide? 2 x)
                              (divide? 3 x)
                              (divide? 5 x))))
                 integers))

(define pairs2 (weighted-pairs stream235 stream235 stream235 weight2))




感谢您的访问,希望对您有所帮助。 欢迎大家关注或收藏、评论或点赞。


为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp


版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。

原文地址:https://www.cnblogs.com/NoMasp/p/4786061.html