Advertisement
Guest User

Untitled

a guest
Nov 20th, 2024
462
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. ; Exercise 3:
  2. ; Design a function widen-river to make every merge point wider in a river network
  3. ; by a given amount.
  4. ; You may omit the purpose statement.
  5.  
  6.  
  7. (define RIVER-S1 (make-stream 3))
  8. (define RIVER-S2 (make-stream 5))
  9. (define RIVER-S3 (make-stream 1))
  10. (define RIVER-S4 (make-stream 6))
  11. (define RIVER-S5 (make-stream 2))
  12. (define RIVER-M1 (make-merge 50 RIVER-S1 RIVER-S2))
  13. (define RIVER-M2 (make-merge 80 RIVER-S3 RIVER-M1))
  14. (define RIVER-M3 (make-merge 50 RIVER-S4 RIVER-S5))
  15. (define RIVER-M4 (make-merge 100 RIVER-M2 RIVER-M3))
  16.  
  17. ; S1:3 S2:5
  18. ; \ /
  19. ; M1:50 S3:1 S4:6 S5:2
  20. ; \ / \ /
  21. ; M2:80 M3:50
  22. ; \ /
  23. ; M4:100
  24. ;
  25.  
  26. ;; widen-river : River Number -> River
  27. ;; updates each merge point in a river network by the given number
  28.  
  29. (check-expect (widen-river RIVER-S1 5) RIVER-S1)
  30. (check-expect (widen-river RIVER-M1 10) (make-merge 60 RIVER-S1 RIVER-S2))
  31. (check-expect (widen-river RIVER-M4 2) (make-merge 102
  32. (make-merge 82 RIVER-S3 (make-merge 52 RIVER-S1 RIVER-S2))
  33. (make-merge 52 RIVER-S4 RIVER-S5)))
  34.  
  35.  
  36. (define (widen-river r n)
  37. (cond [(stream? r) r]
  38. [(merge? r) (make-merge
  39. (+ (merge-width r) n)
  40. (widen-river (merge-left r) n)
  41. (widen-river (merge-rightrp) n))]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement