第八章的习题并不难,但是第八章的思想对于本新手来说还是很有意思,所以把自己做的习题答案分享给大家。
如果各位觉着有帮助的话,动动小手给我点个赞哈
;chapter 8 test 129_1
(cons "Pluto"
(cons "Neptune"
(cons "Uranas"
(cons "Saturn"
(cons "Jupiter"
(cons "Mars"
(cons "Earth"
(cons "Venus"
(cons "Mars"
'() )))))))))
;chapter 8 test 129_2
(cons "steak"
(cons "French fries"
(cons "beans"
(cons "bread"
(cons "water"
(cons "brie cheese"
(cons "ice cream"
'() )))))))
;chapter 8 test 129_3
(cons "infared"
(cons "red"
(cons "orange"
(cons "yellow"
(cons "green"
(cons "cyan"
(cons "blue"
(cons "purple"
(cons "altraviolet"
'() )))))))))
;chapter 8 test 130
(cons "Zhang"
(cons "Wang"
(cons "Li"
(cons "Zhao"
(cons "Qian"
'())))))
;因为(cons 2 '())中,这个2是数字不是字符串
;chapter 8 test 131
;; List-of-booleans
;; - '()
;; - (cons Boolean List-of-booleans)
;; 任意长的布尔值的列表
;; examples
'() ; 空列表
(cons #true '())
(cons #true (cons #false '()))
;chapter 8 test 132
; List-of-names -> Boolean
; 检测是否 "Flatt" 在 a-list-of-names 中
(check-expect (contains-flatt? '()) #false)
(check-expect (contains-flatt? (cons "Find" '()))
#false)
(check-expect (contains-flatt? (cons "Flatt" '()))
#true)
(check-expect
(contains-flatt?
(cons "A" (cons "Flatt" (cons "C" '()))))
#true)
(check-expect
(contains-flatt?
(cons "A" (cons "Find" (cons "C" '()))))
#false)
(define (contains-flatt? alon)
(cond
[(empty? alon) #false]
[(cons? alon)
(or (string=? (first alon) "Flatt")
(contains-flatt? (rest alon)))]))
;chapter 8 test 133
(define (contains-flatt?-V2 alon)
(cond
[(empty? alon) #false]
[(cons? alon)
(cond
[(string=? (first alon) "Flatt") #true]
[else (contains-flatt?-V2 (rest alon))])]))
;哪个好就是见仁见智,我个人喜欢第一个的写法
;chapter 8 test 133
;; String List-of-String -> Boolean
;对于一个字符串和链表,判断这个字符串是否在这个链表之中
(check-expect (contains-string? "Flatt" '()) #false)
(check-expect
(contains-string? "Flatt"
(cons "A" (cons "Flatt" (cons "C" '()))))
#true)
(check-expect
(contains-string? "Flatt"
(cons "A" (cons "Find" (cons "C" '()))))
#false)
;(define (contains-string? str los) #false) ; stub
(define (contains-string? str los)
(cond
[(empty? los) #false]
[else
(or (string=? (first los) str)
(contains-string? str (rest los)))]))