summaryrefslogtreecommitdiff
path: root/coding-exercises/2/46.rkt
diff options
context:
space:
mode:
Diffstat (limited to 'coding-exercises/2/46.rkt')
-rw-r--r--coding-exercises/2/46.rkt32
1 files changed, 32 insertions, 0 deletions
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))))