summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--coding-exercises/2/44.rkt29
2 files changed, 29 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b25c15b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*~
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))