Advertisement
Guest User

Untitled

a guest
May 6th, 2015
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.12 KB | None | 0 0
  1. #lang racket
  2. ; sq : number -> number
  3. (define (sq num) (* num num))
  4.  
  5. ; f-to-c : number -> number
  6. (define (f-to-c temp) (/ (- temp 32) 1.8))
  7.  
  8. ; how-cold : integer -> string
  9. (define (how-cold temp)
  10. (if (< (f-to-c temp) 0) "brrr" "could be worse"))
  11.  
  12. ; pipe-surface-area : integer integer -> double
  13. (define (pipe-surface-area length diameter)
  14. (* pi (* length diameter)))
  15.  
  16. ; spanish-greeting : string -> string
  17. (define (spanish-greeting name)
  18. (format "Hola ~a!" name))
  19.  
  20. ; english-greeting : string -> string
  21. (define (english-greeting name)
  22. (format "Hello ~a!" name))
  23.  
  24. ; spanish? : string -> boolean
  25. (define (spanish? language)
  26. (equal? language "spanish"))
  27.  
  28. ; english? : string -> boolean
  29. (define (english? language)
  30. (equal? language "english"))
  31.  
  32. ; greet : string string -> string
  33. (define (greet name language) (cond
  34. [(spanish? language) (spanish-greeting name)]
  35. [(english? language) (english-greeting name)]))
  36.  
  37. ; add1 : integer -> integer
  38. (define (add1 int)
  39. (+ int 1))
  40.  
  41. ; list-length : list integer -> integer
  42. (define (list-length list [count 0])
  43. (if (empty? list)
  44. count
  45. (list-length (cdr list) (add1 count))))
  46.  
  47. ; search : list object -> integer
  48. (define (search list item [index 0])
  49. (if (empty? list)
  50. -1
  51. (if (equal? (car list) item)
  52. index
  53. (search (cdr list) item (add1 index)))))
  54.  
  55. ; sub1 : integer -> integer
  56. (define (sub1 int)
  57. (- int 1))
  58.  
  59. ; zero? : integer -> boolean
  60. (define (zero? int)
  61. (equal? int 0))
  62.  
  63. ; item-at : list integer -> object
  64. (define (item-at list pos)
  65. (if (zero? pos) (car list) (item-at (cdr list) (sub1 pos))))
  66.  
  67. ; first-and-last : list -> list
  68. (define (first-and-last input)
  69. (list (car input) (item-at input (sub1 (list-length input)))))
  70.  
  71. ; even? : integer -> boolean
  72. (define (even? int)
  73. (equal? (remainder int 2) 0))
  74.  
  75. ; just-the-evens : list list -> list
  76. (define (just-the-evens input [result (list )])
  77. (if (empty? input)
  78. result
  79. (if (even? (car input))
  80. (just-the-evens (cdr input) (append result (list (car input))))
  81. (just-the-evens (cdr input) result))))
  82.  
  83. ; select : list function list -> list
  84. (define (select input filter [result `()])
  85. (if (empty? input)
  86. result
  87. (if (filter (car input))
  88. (select (cdr input) filter (append result (list (car input))))
  89. (select (cdr input) filter result))))
  90.  
  91. ; odd? : integer -> boolean
  92. (define (odd? int)
  93. (not (equal? (remainder int 2) 0)))
  94.  
  95. ; triple-all : list list -> list
  96. (define (triple-all lst [result `()])
  97. (if (empty? lst)
  98. result
  99. (triple-all (cdr lst) (append result (list (triple (car lst)))))))
  100.  
  101. ; triple : integer -> integer
  102. (define (triple int)
  103. (* int 3))
  104.  
  105. ; sum : list -> integer
  106. (define (sum lst)
  107. (apply + lst))
  108.  
  109. ; sum-even-triples : list -> integer
  110. (define (sum-even-triples lst)
  111. (sum (select (triple-all lst) even?)))
  112.  
  113. ; contains-only-lower-case? : list boolean -> boolean
  114. (define (contains-only-lower-case? lst [result #t])
  115. (if (empty? lst)
  116. result
  117. (if result
  118. (if (char-lower-case? (car lst))
  119. (contains-only-lower-case? (cdr lst) #t)
  120. (contains-only-lower-case? (cdr lst) #f))
  121. result)))
  122.  
  123. ; map : list function -> list
  124. (define (map lst fn [result `()])
  125. (if (empty? lst)
  126. result
  127. (map (cdr lst) fn (append result (list (fn (car lst)))))))
  128.  
  129. ; greet-spanish : string -> string
  130. (define (greet-spanish name)
  131. (greet name "spanish"))
  132.  
  133. ; greet-english : string -> string
  134. (define (greet-english)
  135. (lambda (name)
  136. (greet name "english")))
  137.  
  138. (sq 20)
  139. (f-to-c 68)
  140. (how-cold 68)
  141. (pipe-surface-area 12 4)
  142. (greet "Matthew" "english")
  143. (greet "Cassie" "spanish")
  144. (list-length `(1 2 3 4 5 6))
  145. (search `(1 2 3) 1)
  146. (search `(1 2 3) 5)
  147. (item-at `(1 2 3 4 5) 4)
  148. (first-and-last `(1 2 3 4 5 6 7 8 9 0))
  149. (just-the-evens `(1 2 3 4 6 8 10 11 13 15 16))
  150. (select `(1 2 3 4 6 8 10 11 13 15 16) even?)
  151. (select `(1 2 3 4 6 8 10 11 13 15 16) odd?)
  152. (sum `(1 2 3))
  153. (triple-all `(1 2 3))
  154. (sum-even-triples `(1 2 3 4 5 6))
  155. (contains-only-lower-case? `(#\b #\c #\d #\a))
  156. (contains-only-lower-case? `(#\b #\c #\d #\A))
  157. (map `(1 2 3 4 5) triple)
  158. ((greet-english) "Cassie")
  159. (greet-spanish "Mateo")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement