diff options
Diffstat (limited to 'coding-exercises/2')
| -rw-r--r-- | coding-exercises/2/44.rkt | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/coding-exercises/2/44.rkt b/coding-exercises/2/44.rkt index ae76481..9381ac9 100644 --- a/coding-exercises/2/44.rkt +++ b/coding-exercises/2/44.rkt @@ -1,2 +1,29 @@ #lang racket -(require sicp-pic) +(require sicp-pict) + +(define wave2 (beside einstein (flip-vert einstein))) +(define wave4 (below wave2 wave2)) + +(define (right-split painter n) + (if (= n 0) + painter + (let ((smaller (right-split painter (- n 1)))) + (beside smaller (below smaller smaller))))) + +(define (up-split painter n) + (if (= n 0) + painter + (let ((smaller (up-split painter (- n 1)))) + (below smaller (beside 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)))))) +(paint (corner-split einstein 4)) |
