summaryrefslogtreecommitdiffstats
path: root/ex/2/44.rkt
blob: 68197782833941d55fda658cb3678e3cd686f929 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
;;;; License: CC0-1.0

#lang racket

(require
 racket/runtime-path
 sicp-pict)

(define-runtime-path rogers-file "rogers.jpg")

(define rogers
  (bitmap->painter rogers-file))

(define (right-split painter n)
  (if (= n 0)
      painter
      (let ((smaller (right-split painter (- n 1))))
        (beside painter (below smaller smaller)))))

(define (up-split painter n)
  (if (= n  0)
      painter
      (let ((smaller (up-split painter (- n 1))))
        (below painter (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))))))

;;; Racket REPL
;;;
;;; https://ricketyspace.net/sicp/2.44.jpg