序列操作
来源:互联网 发布:中国十大zu最恶心公知 编辑:程序博客网 时间:2024/06/12 19:40
看完这一节,感觉世界观又被重塑。
首先说说这一小节的标题”序列作为一种约定的界面”是什么意思:这句话意思是序列作为程序不同模块间数据流动的形式。
学习lisp语言不久,lisp就给了我很多惊喜,我特地新建了一个文件夹叫astonishing来放代码☺
下面是这一节我的代码:
(define nil (list));(define (enumerate-tree-leaves t) (cond ((null? t) nil) ((not (pair? t)) (list t)) (else (append (enumerate-tree-leaves (car t)) (enumerate-tree-leaves (cdr t))))));(define (enumerate-interval low high) (define (enumerate-iter h ans) (if (> low h) ans (enumerate-iter (- h 1) (cons h ans)))) (enumerate-iter high nil));(define (filter predicate sequence) (cond ((null? sequence) nil) ((predicate (car sequence)) (cons (car sequence) (filter predicate (cdr sequence)))) (else (filter predicate (cdr sequence)))));(define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence)))));(define (append x y) (accumulate cons y x));(define (my-map proc sequence) (accumulate (lambda (x y) (cons (proc x) y)) nil sequence));(define (sum-odd-squares tree) (accumulate + 0 (map (lambda (x) (* x x)) (filter (lambda (x) (= (remainder x 2) 1)) (enumerate-tree-leaves t)))));(define (even-fibs n) (define (fib x) (define (fib-iter a b k) (if (= k x) a (fib-iter b (+ a b) (+ 1 k)))) (fib-iter 0 1 0)) (filter (lambda (x) (= (remainder x 2) 0)) (map fib (enumerate-interval 0 6))));(define (my-min sequence) (accumulate (lambda (x y) (if (< x y) x y)) 10000 sequence));2.33(define (length sequence) (accumulate (lambda (x y) (+ 1 y)) 0 sequence));2.34(define (horner-eval x coefficient-sequence) (accumulate (lambda (a b) (+ a (* x b))) 0 coefficient-sequence)) ;2.35(define (count-leaves t) (accumulate + 0 (map (lambda (x) (if (pair? x) (count-leaves x) 1)) t)));2.36(define (accumulate-n op init seqs) (if (null? (car seqs)) nil (cons (accumulate op init (map car seqs)) (accumulate-n op init (map cdr seqs)))));2.37(define (dot-product v w) (accumulate + 0 (map * v w)))(define (matrix-*-vector m v) (map (lambda (line) (dot-product line v)) m))(define (transpose m) (accumulate-n cons nil m))(define (matrix-*-matrix m n) (let ((cols (transpose n))) (map (lambda (row) (map (lambda (col) (dot-product col row)) cols)) m)));2.38(define (fold-left op init seq) (define (iter tmp ans) (if (null? tmp) ans (iter (cdr tmp) (op ans (car tmp))))) (iter seq init));2.39效率为O(n^2)(define (reverse1 sequence) (accumulate (lambda (x y) (append y (list x))) nil sequence));效率为O(n)(define (reverse2 sequence) (fold-left (lambda (x y) (cons y x)) nil sequence))
0 0
- 序列操作
- 序列操作
- 操作序列
- 操作序列
- OpenCV----视频序列操作
- oracle序列操作
- 序列化操作
- Tyvj 1491 序列操作
- python序列化操作
- ☆【線段樹】序列操作
- 【线段树】序列操作
- 程序序列化操作
- oracle 序列操作
- PostgreSQL序列操作函数:
- STL操作序列
- 判操作序列有效性
- [SCOI2010]序列操作
- scoi2010序列操作
- Xcode以及其他平台主题
- Win7 和 MAC 系统通过VMware共享文件夹
- KMP算法之while循环部分
- 290. Word Pattern
- Java入门习题(三)——初始化
- 序列操作
- Altium 用左键框选后会出现十字光标,且显示为Select a reference piont
- C Variable
- c++实验5
- 定制开机画面
- [小技巧]如何一键查询linux服务器的信息
- 深入理解Nginx第四章:HTTP配置项的步骤整理
- Gof_设计模式之代理模式
- xcode 中#pragma得使用