HtDP Solution Set | Section 3 |
;tbsp->cup : Number -> Number
(define (tbsp->cup tbsps)
(/ tbsps 16))
(tbsp->cup 0)
"should be" 0
(tbsp->cup 16)
"should be" 1
;cup->gal : Number -> Number
(define (cup->gal cups)
(/ cups 16))
(cup->gal 0)
"should be" 0
(cup->gal 16)
"should be" 1
;gal->barrel: Number -> Number
(define (gal->barrel gals)
(/ gals 42))
(gal->barrel 0)
"should be" 0
(gal->barrel 42)
"should be" 1
;tbsp->barrels : Number -> Number
(define (tbsp->barrels tbsps)
(gal->barrel (cup->gal (tbsp->cup tbsps))))
(tbsp->barrels 0)
"should be" 0
(tbsp->barrels 10752)
"should be" 1
;volume : Number -> Number
; return the volume of a sphere given its radius
(define (volume r)
(/ (* 4 pi (expt r 3)) 3))
(volume 0)
"should be" 0
(volume 1)
"should be" (* 4/3 pi)
(volume 2)
"should be" (* 4/3 pi 8)
;shell-volume: Number Number -> Number
(define (shell-volume r1 r2)
(- (volume r2) (volume r1)))
(shell-volume 0 0)
"should be" 0
(shell-volume 0 1)
"should be" (* 4/3 pi)
(shell-volume 1 2)
"should be" (* 4/3 pi 7)
;fed1: Number -> Number
; given an income of $35,000 or below, return tax
(define (fed1 inc)
(* inc .15))
;fed2: Number -> Number
; given an income between $35,000 and $100,000 return tax,
; only for portion greater than $35,000
(define (fed2 inc)
(* (- inc 35000) .25))
;fed3: Number -> Number
; given an income over $100,000 return tax, only for portion
; greater than $100,000
(define (fed3 inc)
(* (- inc 100000) .35))
;state1: Number -> Number
; given an income between 0 and $50,000 return 0
(define (state1 inc)
0)
;state2: Number -> Number
; given an income over $50,000, return state tax amount
(define (state2 inc)
(* (- inc 50000) .05))
(define (tax-for-over-100000 inc)
(+ (fed1 35000)
(fed2 100000)
(fed3 inc)
(state1 50000)
(state2 inc)))
(tax-for-over-100000 100001)
"should be" (+ (* .15 35000) (* .25 65000) (* .35 1) (* .05 50001))
(tax-for-over-100000 200000)
"should be" (+ (* .15 35000) (* .25 65000) (* .35 100000) (* .05 150000))
;What must change?
; - only the multiplier in the state2 function
;; collision-speed : Num Num Num Num -> Num
(define (collision-speed m1 v1 m2 v2)
(/ (+ (momentum m1 v1) (momentum m2 v2))
(+ m1 m2)))
;; momentum : Num Num -> Num
;; to compute the momentum from the veolicity and mass of an object
(define (momentum m v)
(* m v))
(momentum 10 -3)
"should be" -30
(collision-speed 10 3 10 -3)
"should be" 0
(collision-speed 10 4 5 -20)
"should be" -4
(* 0.08 30 principal))
(define (compute-principal sell down)
(- sell down))
(define (total-cost sell down)
(+ sell (compute-interest (compute-principal sell down)) 1000))
(compute-principal 100000 10000)
"should be" 90000
(compute-interest 100000)
"should be" 240000
(total-cost 110000 10000)
"should be" 351000
Jamie Raymond | Matthias Felleisen |
23 september 2002 |