SICP 习题2.41 triple 三元组
2016-06-29 21:38
253 查看
非常朴素的想法,找出所有的三元组,然后判定三元组的和是否与s相等
(define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) (define (enumerate-interval low high) (if (> low high) '() (cons low (enumerate-interval (+ low 1) high)))) (define (fliter predicate sequence) (cond ((null? sequence) '()) ((predicate (car sequence)) (cons (car sequence) (fliter predicate (cdr sequence)))) (else (fliter predicate (cdr sequence))))) (define (flatmap proc seq) (accumulate append '() (map proc seq))) (define (remove item sequence) (fliter (lambda (x) (not (= item x))) sequence)) (define (triple n) (flatmap (lambda (i) (flatmap (lambda (j) (map (lambda (k) (list i j k)) (remove i (remove j (enumerate-interval 1 n))))) (remove i (enumerate-interval 1 n)))) (enumerate-interval 1 n))) (define (n-triple-s n s) (fliter (lambda (x) (= (+ (car x) (cadr x) (caddr x)) s)) (triple n))) (newline) (display (n-triple-s 8 10))
相关文章推荐
- 判断成绩优秀良好的c语言代码
- Linux-文件系统以及目录结构简介
- map转对象
- 重新认识View(一)
- css3 box-sizing属性
- Python全栈开发之13、CSS
- Ubuntu中的ssh的运用
- 【bzoj3926】[Zjoi2015]诸神眷顾的幻想乡 后缀自动机
- Increase the ordinal number at the beginning of each line
- C++ 类的继承二(赋值兼容性原则)
- Python全栈开发之12、html
- 哈弗幸福课十条小贴士
- DP 石子归并
- 设计模式之享元模式
- Node.js 一个简单的Web服务器
- SRM659 1100pts
- 解决 ubuntu 14.04下,eclipse adt-bundle-linux 闪退的问题,最新ADT-23.0.7
- ubuntu下用Gcc编译器编译c语言的静态和动态链接库范例
- SpringMVC @RequestParam注解
- LPC1788启动代码分析