Skip to content

Commit

Permalink
new note 2015-07-29
Browse files Browse the repository at this point in the history
  • Loading branch information
jiacai committed Jul 29, 2015
1 parent b7cbff1 commit 96efc6c
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 0 deletions.
8 changes: 8 additions & 0 deletions 07/2015-07-29.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
## 内容

- 2.2.3 p82 嵌套映射
- 习题2.40、2.41

## 笔记

- 扩充序列范性,将许多通常嵌套循环表达的计算也用信号流图的方式做处理。
37 changes: 37 additions & 0 deletions exercises/02/2.40.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
(load "lib/op.scm")

(define (unique-pairs n)
(define (enumerate-interval n)
(if (< n 1)
nil
(append (enumerate-interval (- n 1))
(list n))))
(accumulate append nil
(map
(lambda (i)
(map (lambda (j) (list j i))
(enumerate-interval (- i 1))))
(enumerate-interval n))))

(define (flatmap proc seq)
(accumulate append nil (map proc seq)))

(unique-pairs 4)
;Value: ((1 2) (1 3) (2 3) (1 4) (2 4) (3 4))

(define (prime? n)
(define (iter i)
(if (< i n)
(if (not (= 0 (remainder n i)))
(iter (+ i 1))
#f)
#t))
(iter 2))

(define (prime-sum-pairs n)
(filter (lambda (p)
(prime? (+ (car p) (cadr p))))
(unique-pairs n)))

(prime-sum-pairs 6)
;Value: ((1 2) (2 3) (1 4) (3 4) (2 5) (1 6) (5 6))
15 changes: 15 additions & 0 deletions exercises/02/2.41.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
(load "2.40.scm")
(define (s-triple n s)
(filter
(lambda (triple)
(let ((a1 (car triple))
(a2 (cadr triple))
(a3 (caddr triple)))
(and (< a1 a3)
(< a2 a3))))
(map (lambda (p)
(append p (list (- s (car p) (cadr p)))))
(unique-pairs n))))

(s-triple 10 10)
;Value: ((1 2 7) (1 3 6) (2 3 5) (1 4 5))

0 comments on commit 96efc6c

Please sign in to comment.