HtDP Solution Set

Section 2



Problem 1 (Solution):
;rect-area: Number Number -> Number
; compute the area of a rectangle given its length and width
#|
(define (rect-area length width) ...)
 
(rect-area 0 0)
"should be" 0
(rect-area 1 2)
"should be" 2
(rect-area 3 3)
"should be" 9
|#
 


Problem 2 (Solution):
;distance: Number Number Number -> Number
; - compute time for boat to cross a river
(define (distance width v-boat v-river)
(sqrt (+ (expt width 2) (expt (/ (* v-river width) v-boat) 2))))
 
 
(distance 10 10 0)
"should be" 10
(distance 4 3 9/4)
"should be" 5
 


Problem 3 (Solution):
;t-elapsed: Number Number Number -> Number
; - calculate how long it will take the two trains to meet
(define (t-elapsed v-train1 v-train2 dist)
(/ dist (+ v-train1 v-train2)))
 
(t-elapsed 50 50 100)
"should be" 1
(t-elapsed 25 50 100)
"should be" 4/3
 


Problem 4 (Solution):
;balance : Number Number Number -> Number
; - compute balance with simple interest
(define (balance principal rate time)
(+ principal (* principal (/ (* rate .01) 12) time)))
 
(balance 1000 10 0)
"should be" 1000
(balance 1000 10 12)
"should be" 1100
 


Problem 5 (Solution):
;tiles : Number Number -> Number
; - compute number of full times necessary for floor
(define (tiles f-length f-width t-length t-width)
(* (ceiling (/ f-width t-width))
(ceiling (/ f-length t-length))))
 
(tiles 10 10 1 1)
"should be" 100
(tiles 24 37 1.5 1.5)
"should be" 400
 


Problem 6 (Solution):
;poly-area : Number Number -> Number
; - return area of polygon
(define (poly-area sides length)
(* 1/4 sides (expt length 2) (/ 1 (tan (/ pi sides)))))
 
(poly-area 3 2)
"should be" (sqrt 3)
(poly-area 4 4)
"should be" 16
 


Problem 7 (Solution):
; mean : Number Number Number Number Number -> Number
; - return mean of 5 scores
(define (mean-5 e1 e2 e3 e4 e5)
(/ (+ e1 e2 e3 e4 e5) 5))
 
(mean-5 0 0 0 0 0)
"should be" 0
(mean-5 1 2 3 4 5)
"should be" 3
 


Problem 8 (Solution):
;perim : Number -> Number
; - given area of square, return its perimeter
(define (perim area)
(* 4 (sqrt area)))
 
(perim 0)
"should be" 0
(perim 4)
"should be" 8
 


Problem 9 (Solution):
;height : Number -> Number
; - given height of ball, compute how far it travels for three bounces
(define (height h)
(+ h (* 2 2/3 h) (* 2 2/3 2/3 h)))
 
(height 36)
"should be" 116
 


Problem 10 (Solution):
;  given length in feet and inches, return total number of inches
(define (total-inches ft in)
(+ (* ft 12) in))
 
(total-inches 0 0)
"should be" 0
(total-inches 1 1)
"should be" 13
 
 


Problem 11 (Solution):
;net-pay : Number -> Number
; given salary, produce net pay based on progressive tax rate
(define (net-pay salary)
(* (- 1 (tax-rate salary)) salary))
 
(define (tax-rate salary)
; given salary, return appropriate tax rate
(* (/ salary 1000) .005))
 
(net-pay 0)
"should be" 0
 
(net-pay 40000)
"should be" 32000
 
"An income over 200,000 requires more to be paid than actually earned."
 


Problem 12 (Solution):
;semester-grade : Number Number -> Number
; given homework and final exam grades, compute semester grade
(define (semester-grade hw fexam)
(+ (* .8 hw) (* .2 fexam)))
 
(semester-grade 0 0)
"should be" 0
 
(semester-grade 100 100)
"should be" 100
 


Problem 13 (Solution):
(define (winning-average wins losses)
(* 1000 (/ wins (+ wins losses))))
 
(winning-average 0 1)
"should be" 0
 
(winning-average 10 10)
"should be" 500
 


Problem 14 (Solution):
;;fuel-efficiency : Number Number -> Number
;; given miles driven and gallons of gas consumed, compute fuel efficiency in mpg
 
;;annual-groceries : Number -> Number
;; given amount spent per week, compute annual amount
(define (annual-groceries weekly) ...)
 
;(annual-groceries 0) "should be" 0
;(annual-groceries 100) "should be" 5200
 
;;slope : Number Number -> Number
;; compute the slope of a line from the the change in y and the change in x
 
;; volume : Number Number Number -> Number
;; compute the volume of a tank for given width, height, and depth
;(volume 0 0 0) "should be" 0
;(volume 1 1 1) "should be" 1
;(volume 10 3 2) "should be" 60
 
;; quiz-average : Number Number Number Number Number -> Number
;; consumes five quiz grades and produces the quiz average
; (quiz 80 80 90 100 100) "should be" 90
; (quiz 80 80 80 80 80) "should be" 80
(define (quiz-average q1 q2 q3 q4 q5) ...)
 
;;annual-groceries : Number -> Number
;; given amount spent per week, compute annual amount
(define (annual-groceries weekly) ...)
 
;(annual-groceries 0) "should be" 0
;(annual-groceries 100) "should be" 5200
 


Problem 15 (Solution):
;; minutes : Number -> Number
;; how many minutes does it take Sis Y. Fuss to push a rock up a hill (30 up, 4 down)
;; (minutes 20) "should be" 1, because she reaches 30 and then doesn't slide back
;; (minutes 30) "should be" 2, because she goes to 30, slides down to 26, and has to push again
(define (minutes d)
(ceiling (/ d (- 30 4))))



Jamie Raymond
Matthias Felleisen
 

23 september 2002