From: Ramakrishnan Muthukrishnan Date: Wed, 25 Aug 2010 18:18:50 +0000 (+0530) Subject: rest of section 2.2 X-Git-Url: https://git.rkrishnan.org/%5B/%5D%20/uri/%22doc.html/flags/rgr-080307.php?a=commitdiff_plain;h=3a27225d827e8719b25ca16c8a8083d7de0f1248;p=sicp.git rest of section 2.2 --- diff --git a/src/sicp/ch2_2.clj b/src/sicp/ch2_2.clj index 93fdcfb..21e482f 100644 --- a/src/sicp/ch2_2.clj +++ b/src/sicp/ch2_2.clj @@ -246,4 +246,32 @@ (flatmap (fn [x] (map (fn [p] (cons x p)) (permutations (remove x s)))) - s))) \ No newline at end of file + s))) + + +;;; 2.2.4 picture language +(defn flipped-pairs [painter] + (let [painter2 (beside painter (flipped-vert painter))] + (below painter2 painter2))) + +(defn right-split [painter n] + (if (= n 0) + painter + (let [smaller (right-split painter (- n 1))] + (beside painter (below smaller smaller))))) + +(defn corner-split [painter n] + (if (= n 0) + painter + (let [up (up-split painter (- n 1)) + right (right-split painter (- n 1)) + 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))))) + +(defn square-limit [painter n] + (let [quarter (corner-split painter n) + half (beside (flip-horiz quarter) quarter)] + (below (flip-vert half) half)))