首页 > 其他 > 详细

【SICP练习】139 练习3.70

时间:2015-03-29 10:47:19      阅读:239      评论:0      收藏:0      [点我收藏+]

练习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))


【SICP练习】139 练习3.70

原文:http://blog.csdn.net/nomasp/article/details/44725067

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!