23 hours ago
my attempt to do the exercises in sicp.
Sunday, July 20, 2008
sicp exercise 2.52
;; Exercise 2.52. Make changes to the square limit of wave shown in figure 2.9 by working at each of the levels described above. In particular:
;; a. Add some segments to the primitive wave painter of exercise 2.49 (to add a smile, for example).
;; b. Change the pattern constructed by corner-split (for example, by using only one copy of the up-split and right-split images instead of two).
;; c. Modify the version of square-limit that uses square-of-four so as to assemble the corners in a different pattern. (For example, you might make the big Mr. Rogers look outward from each corner of the square.)
;; a.
;; :-(
;; b.
(define (corner-split painter n)
(if (= n 0)
painter
(let ((up (up-split painter (- n 1)))
(right (right-split painter (- n 1))))
(let ((top-left up)
(bottom-right right)
(corner (corner-split painter (- n 1))))
(beside (below painter top-left)
(below bottom-right corner))))))
;; c.
(define (square-of-four tl tr bl br)
(lambda (painter)
(let ((top (beside (tl painter) (tr painter)))
(bottom (beside (bl painter) (br painter))))
(below bottom top))))
(define (square-limit painter n)
(let ((combine4 (square-of-four flip-vert rotate180
identity flip-horiz)))
(combine4 (corner-split painter n))))
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment