summaryrefslogtreecommitdiff
path: root/coding-exercises/2/7.rkt
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2023-03-05 20:58:20 +0100
committerMike Vink <mike1994vink@gmail.com>2023-03-05 20:58:20 +0100
commit592ef89cb282ab33d6b10cacae711a4a8e6b1212 (patch)
treee945b18ad80cd466639ee2beee3de77da09f1144 /coding-exercises/2/7.rkt
parentad461cbbbf839d040cda5d38f72072bbc20b5e4f (diff)
start ch2
Diffstat (limited to 'coding-exercises/2/7.rkt')
-rw-r--r--coding-exercises/2/7.rkt45
1 files changed, 45 insertions, 0 deletions
diff --git a/coding-exercises/2/7.rkt b/coding-exercises/2/7.rkt
new file mode 100644
index 0000000..13f28a6
--- /dev/null
+++ b/coding-exercises/2/7.rkt
@@ -0,0 +1,45 @@
+#lang racket
+(provide
+ make-interval
+ upper-bound
+ lower-bound
+ add-interval
+ mul-interval
+ div-interval
+ print-interval)
+
+(define (add-interval x y)
+ (make-interval (+ (lower-bound x) (lower-bound y))
+ (+ (upper-bound x) (upper-bound y))))
+
+(define (mul-interval x y)
+ (let ((p1 (* (lower-bound x) (lower-bound y)))
+ (p2 (* (lower-bound x) (upper-bound y)))
+ (p3 (* (upper-bound x) (lower-bound y)))
+ (p4 (* (upper-bound x) (upper-bound y))))
+ (make-interval (min p1 p2 p3 p4)
+ (max p1 p2 p3 p4))))
+
+(define (div-interval x y)
+ (mul-interval x
+ (make-interval (/ 1.0 (upper-bound y))
+ (/ 1.0 (lower-bound y)))))
+
+(define (make-interval a b) (cons a b))
+(define (lower-bound x) (car x))
+(define (upper-bound x) (cdr x))
+
+(define (print-interval x)
+ (newline)
+ (display "interval{")
+ (display (lower-bound x))
+ (display ",")
+ (display (upper-bound x))
+ (display "}")
+ (newline))
+
+(define (print)
+ (define test-interval (make-interval 1 2))
+ (print-interval test-interval))
+
+(print)