Exercise 188: Check step 1 of the last calculation
Show every step.
Answer
; extract function in question.(define (extract R l t)
(cond
[(empty? l) empty]
[else (cond
[(R (first l) t)
(cons (first l) (extract R (rest l) t))]
[else
(extract R (rest l) t)])]))
I have answered this as a series of steps. This anwer is a bit verbose, but I have shown each change an a seperate step.
=
(cond
[(empty? (cons 6 (cons 4 empty))) empty]
[else (cond
[(< (first (cons 6 (cons 4 empty))) 5)
(cons (first (cons 6 (cons 4 empty)))
(extract < (rest (cons 6 (cons 4 empty))) 5))]
[else (extract < (rest (cons 6 (cons 4 empty))) 5)])])
=
(cond
[false empty]
[else (cond
[(< (first (cons 6 (cons 4 empty))) 5)
(cons (first (cons 6 (cons 4 empty)))
(extract < (rest (cons 6 (cons 4 empty))) 5))]
[else (extract < (rest (cons 6 (cons 4 empty))) 5)])])
=
(cond
[else (cond
[(< (first (cons 6 (cons 4 empty))) 5)
(cons (first (cons 6 (cons 4 empty)))
(extract < (rest (cons 6 (cons 4 empty))) 5))]
[else (extract < (rest (cons 6 (cons 4 empty))) 5)])])
=
(cond
[else (cond
[(< 6 5)
(cons (first (cons 6 (cons 4 empty)))
(extract < (rest (cons 6 (cons 4 empty))) 5))]
[else (extract < (rest (cons 6 (cons 4 empty))) 5)])])
=
(cond
[else (cond
[true
(cons (first (cons 6 (cons 4 empty)))
(extract < (rest (cons 6 (cons 4 empty))) 5))]
[else (extract < (rest (cons 6 (cons 4 empty))) 5)])])
=
(cons (first (cons 6 (cons 4 empty)))
(extract < (rest (cons 6 (cons 4 empty))) 5))]
=
(cons 6 (extract < (rest (cons 6 (cons 4 empty))) 5))
= ; step seven - and we get the result we are looking for
(cons 6 (extract < (cons 4 empty)) 5)
*******
= ; recursing now...
(cond
[(empty? (cons 4 empty)) empty]
[else (cond
[(< (first (cons 4 empty)) 5)
(cons (first (cons 4 empty))
(extract < (rest (cons 4 empty)) 5))]
[else (extract < (rest (cons 4 empty)) 5)])])
=
(cond
[false empty]
[else (cond
[(< (first (cons 4 empty)) 5)
(cons (first (cons 4 empty))
(extract < (rest (cons 4 empty)) 5))]
[else (extract < (rest (cons 4 empty)) 5)])])
=
(cond
[else (cond
[(< (first (cons 4 empty)) 5)
(cons (first (cons 4 empty))
(extract < (rest (cons 4 empty)) 5))]
[else (extract < (rest (cons 4 empty)) 5)])])
=
(cond
[else (cond
[(< 4 5)
(cons (first (cons 4 empty))
(extract < (rest (cons 4 empty)) 5))]
[else (extract < (rest (cons 4 empty)) 5)])])
=
(cond
[else (cond
[(< 4 5)
(cons (first (cons 4 empty))
(extract < (rest (cons 4 empty)) 5))]
[else (extract < (rest (cons 4 empty)) 5)])])
No comments:
Post a Comment