(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)))