Blame


1 665c255d 2023-08-04 jrmu (define (test-case actual expected)
2 665c255d 2023-08-04 jrmu (newline)
3 665c255d 2023-08-04 jrmu (display "Actual: ")
4 665c255d 2023-08-04 jrmu (display actual)
5 665c255d 2023-08-04 jrmu (newline)
6 665c255d 2023-08-04 jrmu (display "Expected: ")
7 665c255d 2023-08-04 jrmu (display expected)
8 665c255d 2023-08-04 jrmu (newline))
9 665c255d 2023-08-04 jrmu
10 665c255d 2023-08-04 jrmu (define (deep-reverse tree)
11 665c255d 2023-08-04 jrmu (cond ((null? tree) '())
12 665c255d 2023-08-04 jrmu ((not (pair? tree)) tree)
13 665c255d 2023-08-04 jrmu (else (append
14 665c255d 2023-08-04 jrmu (deep-reverse (cdr tree))
15 665c255d 2023-08-04 jrmu (list (deep-reverse (car tree)))))))
16 665c255d 2023-08-04 jrmu
17 665c255d 2023-08-04 jrmu ;; (define x (list (list 1 2) (list 3 4)))
18 665c255d 2023-08-04 jrmu ;; (test-case (reverse x) '((3 4) (1 2)))
19 665c255d 2023-08-04 jrmu ;; (test-case (deep-reverse x) '((4 3) (2 1)))
20 665c255d 2023-08-04 jrmu
21 665c255d 2023-08-04 jrmu
22 665c255d 2023-08-04 jrmu ;;Exercise 2.28. Write a procedure fringe that takes as argument a tree (represented as a list) and returns a list whose elements are all the leaves of the tree arranged in left-to-right order. For example,
23 665c255d 2023-08-04 jrmu
24 665c255d 2023-08-04 jrmu (define (fringe tree)
25 665c255d 2023-08-04 jrmu (cond ((null? tree) '())
26 665c255d 2023-08-04 jrmu ((not (pair? tree)) (list tree))
27 665c255d 2023-08-04 jrmu (else (append (fringe (car tree))
28 665c255d 2023-08-04 jrmu (fringe (cdr tree))))))
29 665c255d 2023-08-04 jrmu
30 665c255d 2023-08-04 jrmu
31 665c255d 2023-08-04 jrmu (define x (list (list 1 2) (list 3 4)))
32 665c255d 2023-08-04 jrmu (test-case (fringe x) '(1 2 3 4))
33 665c255d 2023-08-04 jrmu (test-case (fringe (list x x)) '(1 2 3 4 1 2 3 4))