sicp-solutions/chapter-2/ex-2.45.scm

26 lines
No EOL
770 B
Scheme

#lang sicp
(#%require sicp-pict)
(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)))))
(define (split main-dir side-dir)
(define (split-function painter n)
(if (= n 0)
painter
(let ((smaller (split-function painter (- n 1))))
(main-dir painter
(side-dir smaller smaller)))))
split-function)
(define up-split (split below beside))
(define right-split (split beside below))