码迷,mamicode.com
首页 > 其他好文 > 详细

【SICP练习】139 练习3.70

时间:2015-03-29 10:50:12      阅读:132      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!