simply scheme 第八章 练习
2010-07-06 14:05
134 查看
8.1
(a e i o u)
()
0
#f
(16 144 0)
(aioee)
25
(go d sunshi)
8.2
(keep vowel? 'birthday)
(every first '(golden slumbers))
(first '(golden slumbers))
(every last '(little child))
> (accumulate word (every last '(little child)))
(every + '(2 3 4 5))
(accumulate + '(2 3 4 5))
8.4
(define (choose-beatles f)
(keep f '(john paul george ringo)))
8.5
(define (transform-beatles f)
(every f '(john paul george ringo)))
8.6
(define (words wd)
(every convert wd))
(define (convert x)
(cond((equal? x 'a) 'about)
((equal? x 'b) 'bring)
((equal? x 'c) 'cab)
((equal? x 'd) 'digit)
((equal? x 'e) 'erection)
((equal? x 'f) 'fail)
((equal? x 'g) 'gtalk)
((equal? x 'h) 'hello)
((equal? x 'i) 'intern)
((equal? x 'j) 'jack)
((equal? x 'k) 'knight)
((equal? x 'l) 'little)
((equal? x 'm) 'mom)
((equal? x 'n) 'nation)
((equal? x 'o) 'open)
((equal? x 'p) 'pantyhose)
((equal? x 'q) 'quit)
((equal? x 'r) 'right)
((equal? x 's) 'strong)
((equal? x 't) 'tight)
((equal? x 'u) 'up)
((equal? x 'v) 'villa)
((equal? x 'w) 'we)
((equal? x 'x) 'x)
((equal? x 'y) 'yes)
((equal? x 'z) 'zip)))
8.7
(define (letter-count sent)
(accumulate +(every always-one (every first (accumulate word sent)))))
(define (always-one arg)
1)
8.10
(define (true-for-all? f arg)
(equal? (count (keep f arg)) (count arg)))
8.11
(define (grade-modifier wd)
(cond((equal? (last wd) '+) .33)
((equal? (last wd) '-) -.33)
(else 0)))
(define (base-grade wd)
(cond((equal? (first wd) 'A) 4)
((equal? (first wd) 'B) 3)
((equal? (first wd) 'C) 2)
((equal? (first wd) 'D) 1)
((equal? (first wd) 'F) 0)))
(define (grade wd)
(+ (base-grade wd) (grade-modifier wd)))
(define (gpa sent)
(/ (accumulate +(every grade sent))(count sent)))
8.12
(define (count-ums sent)
(count (keep um? sent)))
(define (um? wd)
(equal? wd 'um))
8.13
(define (phone-unspell wd)
(accumulate word(every con wd)))
(define (con wd)
(cond ((member? wd 'abc) 2)
((member? wd 'def) 3)
((member? wd 'ghi) 4)
((member? wd 'jkl) 5)
((member? wd 'mno) 6)
((member? wd 'pqrs) 7)
((member? wd 'tuv) 8)
((member? wd 'wxyz) 9)))
8.14
(define (subword wd s e)
((repeated bl(-(count wd) e))((repeated bf(- s 1))wd)))
(a e i o u)
()
0
#f
(16 144 0)
(aioee)
25
(go d sunshi)
8.2
(keep vowel? 'birthday)
(every first '(golden slumbers))
(first '(golden slumbers))
(every last '(little child))
> (accumulate word (every last '(little child)))
(every + '(2 3 4 5))
(accumulate + '(2 3 4 5))
8.4
(define (choose-beatles f)
(keep f '(john paul george ringo)))
8.5
(define (transform-beatles f)
(every f '(john paul george ringo)))
8.6
(define (words wd)
(every convert wd))
(define (convert x)
(cond((equal? x 'a) 'about)
((equal? x 'b) 'bring)
((equal? x 'c) 'cab)
((equal? x 'd) 'digit)
((equal? x 'e) 'erection)
((equal? x 'f) 'fail)
((equal? x 'g) 'gtalk)
((equal? x 'h) 'hello)
((equal? x 'i) 'intern)
((equal? x 'j) 'jack)
((equal? x 'k) 'knight)
((equal? x 'l) 'little)
((equal? x 'm) 'mom)
((equal? x 'n) 'nation)
((equal? x 'o) 'open)
((equal? x 'p) 'pantyhose)
((equal? x 'q) 'quit)
((equal? x 'r) 'right)
((equal? x 's) 'strong)
((equal? x 't) 'tight)
((equal? x 'u) 'up)
((equal? x 'v) 'villa)
((equal? x 'w) 'we)
((equal? x 'x) 'x)
((equal? x 'y) 'yes)
((equal? x 'z) 'zip)))
8.7
(define (letter-count sent)
(accumulate +(every always-one (every first (accumulate word sent)))))
(define (always-one arg)
1)
8.10
(define (true-for-all? f arg)
(equal? (count (keep f arg)) (count arg)))
8.11
(define (grade-modifier wd)
(cond((equal? (last wd) '+) .33)
((equal? (last wd) '-) -.33)
(else 0)))
(define (base-grade wd)
(cond((equal? (first wd) 'A) 4)
((equal? (first wd) 'B) 3)
((equal? (first wd) 'C) 2)
((equal? (first wd) 'D) 1)
((equal? (first wd) 'F) 0)))
(define (grade wd)
(+ (base-grade wd) (grade-modifier wd)))
(define (gpa sent)
(/ (accumulate +(every grade sent))(count sent)))
8.12
(define (count-ums sent)
(count (keep um? sent)))
(define (um? wd)
(equal? wd 'um))
8.13
(define (phone-unspell wd)
(accumulate word(every con wd)))
(define (con wd)
(cond ((member? wd 'abc) 2)
((member? wd 'def) 3)
((member? wd 'ghi) 4)
((member? wd 'jkl) 5)
((member? wd 'mno) 6)
((member? wd 'pqrs) 7)
((member? wd 'tuv) 8)
((member? wd 'wxyz) 9)))
8.14
(define (subword wd s e)
((repeated bl(-(count wd) e))((repeated bf(- s 1))wd)))
相关文章推荐
- (一〇八)第八章编程练习
- python核心编程--第八章 8.15 练习
- 现代软件工程 第八章 【需求分析】练习与讨论
- Java编程思想第四版第八章练习
- simply scheme 第三章 练习
- simply scheme 第十一章 练习
- simply scheme 第十四章 练习
- 第八章上机练习3 老师答案
- 第八章 编程练习
- python编程:从入门到实践-第八章练习
- python核心编程第八章练习
- 《Android编程权威指南》第二版 第八章 挑战练习
- C primer plus 第八章 练习2:
- C primer plus 第八章 练习7:
- JAVA OOP 第八章JDBC练习+Basedao
- Python 核心编程(第二版)第八章 练习完整答案[转载]
- 第八章 8.2.1节练习
- 第八章编程练习第一题:设计一个程序,统计从输入到文件结尾为止的字符数
- C primer plus 第八章 字符输入输出与输入验证 编程练习 个人答案
- simply scheme 第十五章 练习