From: Ramakrishnan Muthukrishnan <vu3rdd@gmail.com>
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/frontends/somewhere?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)))