From: Ramakrishnan Muthukrishnan Date: Wed, 25 Aug 2010 18:17:32 +0000 (+0530) Subject: solution to 2.20 in Scheme (DrRacket) X-Git-Url: https://git.rkrishnan.org/(%5B%5E?a=commitdiff_plain;h=95be493804c3291ec5b78ec3ab5d8fb88a94750c;p=sicp.git solution to 2.20 in Scheme (DrRacket) --- diff --git a/src/sicp/ex2_44.scm b/src/sicp/ex2_44.scm new file mode 100644 index 0000000..03fe5aa --- /dev/null +++ b/src/sicp/ex2_44.scm @@ -0,0 +1,39 @@ +#lang scheme + +(require (planet soegaard/sicp:2:1/sicp)) + + +(define (flipped-pairs painter) + (let ((painter2 (beside painter (flip-vert painter)))) + (below painter2 painter2))) + +(define (right-split painter n) + (if (= n 0) + painter + (let ((smaller (right-split painter (- n 1)))) + (beside painter (below 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)))))) + +(define (square-limit painter n) + (let ((quarter (corner-split painter n))) + (let ((half (beside (flip-horiz quarter) quarter))) + (below (flip-vert half) half)))) + +(define (up-split painter n) + (if (= n 0) + painter + (let ((smaller (up-split painter (- n 1)))) + (below painter (beside smaller smaller))))) + + +