summaryrefslogtreecommitdiff
path: root/coding-exercises/2/83
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2023-05-07 19:05:38 +0200
committerMike Vink <mike1994vink@gmail.com>2023-05-07 19:05:38 +0200
commitef8fd9c3e94f37ab4cdd73601cef9d35724ff79a (patch)
tree4389744f902eeb385e9d3f080fbd6e3ef7a5cd48 /coding-exercises/2/83
parentf5bdf1084cd72ebb6556aa4df66f4191abc2b680 (diff)
fix projecting with rationals?
Diffstat (limited to 'coding-exercises/2/83')
-rw-r--r--coding-exercises/2/83/install-rational.rkt17
-rw-r--r--coding-exercises/2/83/install-real.rkt2
-rw-r--r--coding-exercises/2/83/install.rkt32
3 files changed, 31 insertions, 20 deletions
diff --git a/coding-exercises/2/83/install-rational.rkt b/coding-exercises/2/83/install-rational.rkt
index d1c94fc..334f802 100644
--- a/coding-exercises/2/83/install-rational.rkt
+++ b/coding-exercises/2/83/install-rational.rkt
@@ -69,8 +69,20 @@
(let ((g (gcd n d)))
(cons (sign (/ n g)) (abs (/ d g)))))
+ (define (dropme rat)
+ (display (list (numer rat) (denom rat)))
+ (display (list (integer? (numer rat)) (integer? (denom rat))))
+ (if (and (integer? (numer rat))
+ (integer? (denom rat)))
+ ((get 'make 'integer) (/ (numer rat) (denom rat)))
+ (list 'undefined)))
(define (raiseme rat)
- ((get 'make 'real) (/ (numer rat) (denom rat))))
+ (display (list (numer rat) (denom rat)))
+ (display (list (integer? (numer rat)) (integer? (denom rat))))
+ (if (and (integer? (numer rat))
+ (integer? (denom rat)))
+ ((get 'make 'real) (/ (numer rat) (denom rat)))
+ (list 'undefined)))
;; constructor
(put 'make 'rational
@@ -89,8 +101,7 @@
(put 'div '(rational rational)
(lambda (x y) (tagme (div-rat x y))))
(put 'raise '(rational) raiseme)
- (put 'project '(rational) (lambda (rat)
- ((get 'make 'integer) (/ (numer rat) (denom rat)))))
+ (put 'project '(rational) dropme)
;; sqrt and trig methods for complex nums
(put 'sqr '(rational) (lambda (r) (sqr (raiseme r))))
(put 'sqrt '(rational) (lambda (r) (sqrt (raiseme r))))
diff --git a/coding-exercises/2/83/install-real.rkt b/coding-exercises/2/83/install-real.rkt
index 45b1a6c..d82d48a 100644
--- a/coding-exercises/2/83/install-real.rkt
+++ b/coding-exercises/2/83/install-real.rkt
@@ -24,7 +24,7 @@
(put 'div '(real real) (lambda (x y) (tagme (make (/ x y)))))
(put 'raise '(real) raiseme)
(put 'project '(real) (lambda (n)
- ((get 'make 'rational) (round n) 1)))
+ ((get 'make 'rational) n 1.0)))
;; sqrt and trig methods for complex nums
(put 'sqr '(real) sqr)
(put 'sqrt '(real) sqrt)
diff --git a/coding-exercises/2/83/install.rkt b/coding-exercises/2/83/install.rkt
index 5a4f72a..fcaff0b 100644
--- a/coding-exercises/2/83/install.rkt
+++ b/coding-exercises/2/83/install.rkt
@@ -11,14 +11,14 @@
make-complex-rect
test-complex-rect
make-complex-polar
- test-complex-polar
+ ;test-complex-polar
term
dense-termlist
sparse-termlist
make-polynomial
- test-poly1
- test-poly2
- test-poly3
+ ; test-poly1
+ ; test-poly2
+ ; test-poly3
=zero?
equ?
add
@@ -82,8 +82,8 @@
((get 'make-from-mag-ang 'complex) x y))
(define test-complex (make-complex 1 2))
(define test-complex-rect (make-complex-rect 1 2))
-(define test-complex-polar (make-complex-polar (apply-fn 'magnitude test-complex)
- (apply-fn 'angle test-complex)))
+(display (apply-fn 'magnitude test-complex))
+;; (define test-complex-polar (make-complex-polar (apply-fn 'magnitude test-complex) (apply-fn 'angle test-complex)))
;; polynomial
(define (term order coeff)
@@ -94,16 +94,16 @@
((get 'make-from-terms 'dense-termlist) terms))
(define (make-polynomial var terms)
((get 'make 'polynomial) var terms))
-(define test-poly1 (make-polynomial 'x (sparse-termlist
- (term 1 test-integer))))
-(define test-poly2 (make-polynomial 'x (sparse-termlist
- (term 100 test-complex)
- (term 2 test-real)
- (term 1 test-rat)
- (term 0 test-integer))))
-(define test-poly3 (make-polynomial 'x (sparse-termlist
- (term 50 test-rat)
- (term 0 2))))
+; (define test-poly1 (make-polynomial 'x (sparse-termlist
+; (term 1 test-integer)))
+; (define test-poly2 (make-polynomial 'x (sparse-termlist
+; (term 100 test-complex)
+; (term 2 test-real)
+; (term 1 test-rat)
+; (term 0 test-integer))))
+; (define test-poly3 (make-polynomial 'x (sparse-termlist
+; (term 50 test-rat)
+; (term 0 2))))
;; generic methods
(define (equ? a1 a2)