zoukankan      html  css  js  c++  java
  • SICP:2.40 2.41

    #lang racket
    
    (define (accumulate op initial seq)
      (if (null? seq)
          initial
          (op (car seq)
          (accumulate op initial (cdr seq))))
      );accumulate
    
    (define (append lst1 lst2)
      (if (null? lst1)
          lst2
          (cons (car lst1)
            (append (cdr lst1) lst2)))
      );append
    
    (define (enumerate-interval i j)
      (if (> i j)
          '()
          (cons i
            (enumerate-interval (+ 1 i) j))
          ));enumerate-interval
    
    
    (define (unique-pairs n)
      (accumulate append
              '()
              (map (lambda(i) (map (lambda (j) (list i j))
                       (enumerate-interval (+ i 1) n)))
               (enumerate-interval 1 n));map
              );accumulate
      );unique-pairs
    
    (unique-pairs 3)
    
    (define (flatmap proc seq)
      (accumulate append '() (map proc seq))
      );flatmap
    
    (define (filter predicate seq)
      (cond ((null? seq) '())
        ((predicate (car seq))
         (cons (car seq) (filter predicate (cdr seq))))
        (else (filter predicate (cdr seq))));cond
      );filter
    
    (define (unique-triple n)
      (flatmap
       (lambda (x) (map (lambda (j) (cons x j))
                (unique-pairs (- x 1)));map
           );lambda
       (enumerate-interval 1 n));flatmap
      );unique-triple
    
    (unique-triple 5)

     unique-pairs输出序对(i, j), 其中1<=i < j<= n

    unique-triple输出序对(i, j, z)

    这里用到了嵌套映射

  • 相关阅读:
    Linux系统服务
    Linux进程管理
    Linux压缩打包
    Linux输入输出
    Linux权限管理
    Linux用户管理
    Linux文件管理
    Linux-Shell
    Centos7 安装jdk1.8
    Python数据分析之路
  • 原文地址:https://www.cnblogs.com/wizzhangquan/p/4457440.html
Copyright © 2011-2022 走看看