]> git.rkrishnan.org Git - sicp.git/blob - src/sicp/ex2_44.scm
Solution to 4.44. A bit too verbose. Can be improved by better
[sicp.git] / src / sicp / ex2_44.scm
1 #lang scheme
2
3 (require (planet soegaard/sicp:2:1/sicp))
4
5
6 (define (flipped-pairs painter)
7   (let ((painter2 (beside painter (flip-vert painter))))
8     (below painter2 painter2)))
9
10 (define (right-split painter n)
11   (if (= n 0)
12       painter
13       (let ((smaller (right-split painter (- n 1))))
14         (beside painter (below smaller smaller)))))
15
16 (define (corner-split painter n)
17   (if (= n 0)
18       painter
19       (let ((up (up-split painter (- n 1)))
20             (right (right-split painter (- n 1))))
21         (let ((top-left (beside up up))
22               (bottom-right (below right right))
23               (corner (corner-split painter (- n 1))))
24           (beside (below painter top-left)
25                   (below bottom-right corner))))))
26
27 (define (square-limit painter n)
28   (let ((quarter (corner-split painter n)))
29     (let ((half (beside (flip-horiz quarter) quarter)))
30       (below (flip-vert half) half))))
31
32 (define (up-split painter n)
33   (if (= n 0)
34       painter
35       (let ((smaller (up-split painter (- n 1))))
36         (below painter (beside smaller smaller)))))
37
38
39