31 lines
No EOL
912 B
Scheme
31 lines
No EOL
912 B
Scheme
#lang sicp
|
|
|
|
(#%require sicp-pict)
|
|
|
|
(define ein2 (beside einstein (flip-vert einstein)))
|
|
(define ein4 (below ein2 ein2))
|
|
(define (right-split painter n)
|
|
(if (= n 0)
|
|
painter
|
|
(let ((right-split-1 (right-split painter (- n 1))))
|
|
(beside painter
|
|
(below right-split-1 right-split-1)))))
|
|
|
|
(define (corner-split painter n)
|
|
(if (= n 0)
|
|
painter
|
|
(let ((smaller-r (right-split painter (- n 1)))
|
|
(smaller-u (up-split painter (- n 1)))
|
|
(smaller-c (corner-split painter (- n 1))))
|
|
(below (beside painter
|
|
(below smaller-r smaller-r))
|
|
(beside (beside smaller-u smaller-u)
|
|
smaller-c)))))
|
|
|
|
; the actual exercise:
|
|
(define (up-split painter n)
|
|
(if (= n 0)
|
|
painter
|
|
(let ((smaller (up-split painter (- n 1))))
|
|
(below painter
|
|
(beside smaller smaller))))) |