sicp-solutions/ex-2.44.scm

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)))))