26 lines
No EOL
770 B
Scheme
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)) |