diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2023-03-19 10:24:56 +0100 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2023-03-19 10:24:56 +0100 |
| commit | dc322c0c524ae959e623636d68716c91d5a09404 (patch) | |
| tree | 6419d49fef6de67ddd90e111aa0e97dd73847d7b /coding-exercises | |
| parent | 53bdf776c4f426a92953d2afa76c1f9ee008c02c (diff) | |
fixup
Diffstat (limited to 'coding-exercises')
| -rw-r--r-- | coding-exercises/2/44.rkt | 9 | ||||
| -rw-r--r-- | coding-exercises/2/45.rkt | 10 | ||||
| -rw-r--r-- | coding-exercises/2/46.rkt | 32 | ||||
| -rw-r--r-- | coding-exercises/2/47.rkt | 43 | ||||
| -rw-r--r-- | coding-exercises/2/48.rkt | 8 | ||||
| -rw-r--r-- | coding-exercises/2/49.rkt | 21 |
6 files changed, 123 insertions, 0 deletions
diff --git a/coding-exercises/2/44.rkt b/coding-exercises/2/44.rkt index 9381ac9..3b8c76c 100644 --- a/coding-exercises/2/44.rkt +++ b/coding-exercises/2/44.rkt @@ -1,5 +1,6 @@ #lang racket (require sicp-pict) +(require "../../shared/pict.rkt") (define wave2 (beside einstein (flip-vert einstein))) (define wave4 (below wave2 wave2)) @@ -27,3 +28,11 @@ (beside (below painter top-left) (below bottom-right corner)))))) (paint (corner-split einstein 4)) + +(define (square-limit painter n) + (let ((quarter (corner-split painter n))) + (let ((half (beside (flip-horiz quarter) quarter))) + (below (flip-vert half) half)))) + +(square-limit einstein 4) +(paint (square-limit einstein 4)) diff --git a/coding-exercises/2/45.rkt b/coding-exercises/2/45.rkt new file mode 100644 index 0000000..1939675 --- /dev/null +++ b/coding-exercises/2/45.rkt @@ -0,0 +1,10 @@ +#lang racket +(require sicp-pict) + +(define (split adjoiner splitter) + (lambda (painter) + (let ((splitted (splitter painter painter))) + (adjoiner painter splitted)))) + +(define right-split (split beside below)) +(define up-split (split below beside)) diff --git a/coding-exercises/2/46.rkt b/coding-exercises/2/46.rkt new file mode 100644 index 0000000..4016ef7 --- /dev/null +++ b/coding-exercises/2/46.rkt @@ -0,0 +1,32 @@ +#lang racket +(require "../../shared/lists.rkt") + +(define (make-vect x y) + (cons x y)) +(define (xcor-vect v) + (car v)) +(define (ycor-vect v) + (cdr v)) + +(define (add-vect . v) + (make-vect + (fold-right + 0 (map xcor-vect v)) + (fold-right + 0 (map ycor-vect v)))) +(define (sub-vect . v) + (let ((xcors (map xcor-vect v)) + (ycors (map ycor-vect v))) + (make-vect + (- (car xcors) (fold-right + 0 (cdr xcors))) + (- (car ycors) (fold-right + 0 (cdr ycors)))))) +(define (scale-vect s v) + (make-vect (* s (xcor-vect v)) + (* s (ycor-vect v)))) + +(define test-vec (make-vect 1 2)) +(define test-vec2 (make-vect 3 4)) +((lambda () + (display (add-vect test-vec test-vec2)) + (newline) + (display (sub-vect test-vec test-vec2)) + (newline) + (display (scale-vect 3 test-vec)))) diff --git a/coding-exercises/2/47.rkt b/coding-exercises/2/47.rkt new file mode 100644 index 0000000..5e1c562 --- /dev/null +++ b/coding-exercises/2/47.rkt @@ -0,0 +1,43 @@ +#lang racket +(require "../../shared/pict.rkt") +(define (make-frame origin edge1 edge2) + (list origin edge1 edge2)) +(define (origin-frame frame) + (car frame)) +(define (edge1-frame frame) + (cadr frame)) +(define (edge2-frame frame) + (caddr frame)) + +(define test-frame (make-frame + (make-vect 1 2) + (make-vect 2 4) + (make-vect 3 6))) +((lambda () + (newline) + (display test-frame) + (newline) + (display (origin-frame test-frame)) + (display (edge1-frame test-frame)) + (display (edge2-frame test-frame)))) + +(define (make-frame2 origin edge1 edge2) + (cons origin (cons edge1 edge2))) +(define (origin-frame2 frame) + (car frame)) +(define (edge1-frame2 frame) + (cadr frame)) +(define (edge2-frame2 frame) + (cddr frame)) + +(define test-frame2 (make-frame2 + (make-vect 1 2) + (make-vect 2 4) + (make-vect 3 6))) +((lambda () + (newline) + (display test-frame2) + (newline) + (display (origin-frame2 test-frame2)) + (display (edge1-frame2 test-frame2)) + (display (edge2-frame2 test-frame2)))) diff --git a/coding-exercises/2/48.rkt b/coding-exercises/2/48.rkt new file mode 100644 index 0000000..2ff696a --- /dev/null +++ b/coding-exercises/2/48.rkt @@ -0,0 +1,8 @@ +#lang racket + +(define (make-segment start end) + (cons start end)) +(define (start-segment s) + (car s)) +(define (end-segment s) + (cdr s)) diff --git a/coding-exercises/2/49.rkt b/coding-exercises/2/49.rkt new file mode 100644 index 0000000..688364a --- /dev/null +++ b/coding-exercises/2/49.rkt @@ -0,0 +1,21 @@ +#lang racket +(require (only-in sicp-pict + paint + segments->painter)) +(require "../../shared/pict.rkt") + +(define (outline frame) + (display frame) + (let ((corner + (add-vect + (edge1-frame frame) + (edge2-frame frame))) + (origin (origin-frame frame)) + (e1 (edge1-frame frame)) + (e2 (edge2-frame frame))) + (segments->painter + (list (make-segment origin e1) + (make-segment e1 corner) + (make-segment corner e2) + (make-segment e2 origin))))) +(paint outline) |
