59 lines
1.5 KiB
Scheme
59 lines
1.5 KiB
Scheme
;: (define wave2 (beside wave (flip-vert wave)))
|
|
;: (define wave4 (below wave2 wave2))
|
|
|
|
|
|
(define (flipped-pairs painter)
|
|
(let ((painter2 (beside painter (flip-vert painter))))
|
|
(below painter2 painter2)))
|
|
|
|
|
|
;: (define wave4 (flipped-pairs wave))
|
|
|
|
|
|
(define (right-split painter n)
|
|
(if (= n 0)
|
|
painter
|
|
(let ((smaller (right-split painter (- n 1))))
|
|
(beside painter (below smaller smaller)))))
|
|
|
|
|
|
(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 (beside up up))
|
|
(bottom-right (below right right))
|
|
(corner (corner-split painter (- n 1))))
|
|
(beside (below painter top-left)
|
|
(below bottom-right corner))))))
|
|
|
|
|
|
(define (square-limit painter n)
|
|
(let ((quarter (corner-split painter n)))
|
|
(let ((half (beside (flip-horiz quarter) quarter)))
|
|
(below (flip-vert half) half))))
|
|
|
|
|
|
; 2.44
|
|
(define (up-split painter n)
|
|
(if (= n 0)
|
|
painter
|
|
(let ((smaller (up-split painter (- n 1))))
|
|
(below painter (beside smaller smaller)))))
|
|
|
|
(define (right-split painter n)
|
|
(if (= n 0)
|
|
painter
|
|
(let ((smaller (right-split painter (- n 1))))
|
|
(beside painter (below smaller smaller)))))
|
|
|
|
; 2.45
|
|
(define (split inner-op outer-op)
|
|
(define (compose painter n)
|
|
(if (= n 0)
|
|
painter
|
|
(let ((smaller (compose painter (- n 1))))
|
|
(outer-op painter (inner-op smaller smaller)))))
|
|
(compose))
|