Advertisement
timothy235

sicp-3-3-4-test-cases

Mar 1st, 2017
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 3.60 KB | None | 0 0
  1. #lang racket
  2. (require "3-3-4-program.rkt")
  3.  
  4. ;; Examining these test cases will help understand how the program is working.
  5. ;; All the repl output is at the end.  I thought it was more readable that way.
  6.  
  7. ;; TRY AN INVERTER
  8.  
  9. (displayln 'INVERTER)
  10. (define in (make-wire))
  11. (set-signal! in 1)
  12. (define out (make-wire))
  13. (displayln 'BEFORE)
  14. (probe 'in in)
  15. (probe 'out out)
  16. (displayln 'DURING)
  17. (inverter in out)
  18. (propagate)
  19. (displayln 'AFTER)
  20. (probe 'in in)
  21. (probe 'out out)
  22. (printf "~n")
  23.  
  24. ;; TRY AN AND-GATE
  25.  
  26. (displayln 'AND-GATE)
  27. (define in3 (make-wire))
  28. (set-signal! in3 1)
  29. (define in4 (make-wire))
  30. (define out2 (make-wire))
  31. (displayln 'BEFORE)
  32. (probe 'in3 in3)
  33. (probe 'in4 in4)
  34. (probe 'out2 out2)
  35. (displayln 'DURING)
  36. (and-gate in3 in4 out2)
  37. (propagate)
  38. (displayln 'AFTER)
  39. (probe 'in3 in3)
  40. (probe 'in4 in4)
  41. (probe 'out2 out2)
  42. (printf "~n")
  43.  
  44. ;; TRY AN OR-GATE
  45.  
  46. (displayln 'OR-GATE)
  47. (define in1 (make-wire))
  48. (set-signal! in1 1)
  49. (define in2 (make-wire))
  50. (define out1 (make-wire))
  51. (displayln 'BEFORE)
  52. (probe 'in1 in1)
  53. (probe 'in2 in2)
  54. (probe 'out1 out1)
  55. (displayln 'DURING)
  56. (or-gate in1 in2 out1)
  57. (propagate)
  58. (displayln 'AFTER)
  59. (probe 'in1 in1)
  60. (probe 'in2 in2)
  61. (probe 'out1 out1)
  62. (printf "~n")
  63.  
  64. ;; TRY A HALF-ADDER
  65.  
  66. (displayln 'HALF-ADDER)
  67. (define in5 (make-wire))
  68. (set-signal! in5 1)
  69. (define in6 (make-wire))
  70. (define sum (make-wire))
  71. (define carry (make-wire))
  72. (displayln 'BEFORE)
  73. (probe 'in5 in5)
  74. (probe 'in6 in6)
  75. (probe 'sum sum)
  76. (probe 'carry carry)
  77. (displayln 'DURING)
  78. (half-adder in5 in6 sum carry)
  79. (propagate)
  80. (displayln 'AFTER)
  81. (probe 'in5 in5)
  82. (probe 'in6 in6)
  83. (probe 'sum sum)
  84. (probe 'carry carry)
  85. (printf "~n")
  86.  
  87. ;; TRY A FULL-ADDER
  88.  
  89. (displayln 'FULL-ADDER)
  90. (define in7 (make-wire))
  91. (set-signal! in7 1)
  92. (define in8 (make-wire))
  93. (define carry-in (make-wire))
  94. (define sum1 (make-wire))
  95. (define carry-out (make-wire))
  96. (displayln 'BEFORE)
  97. (probe 'in7 in7)
  98. (probe 'in8 in8)
  99. (probe 'carry-in carry-in)
  100. (probe 'sum1 sum1)
  101. (probe 'carry-out carry-out)
  102. (displayln 'DURING)
  103. (full-adder in7 in8 carry-in sum1 carry-out)
  104. (propagate)
  105. (displayln 'AFTER)
  106. (probe 'in7 in7)
  107. (probe 'in8 in8)
  108. (probe 'carry-in carry-in)
  109. (probe 'sum1 sum1)
  110. (probe 'carry-out carry-out)
  111. (printf "~n")
  112.  
  113. ;; REPL OUTPUT
  114.  
  115. ;; INVERTER
  116. ;; 'done
  117. ;; BEFORE
  118. ;; in 0  New-value = 1
  119. ;; out 0  New-value = 0
  120. ;; DURING
  121. ;; 'ok
  122. ;; 'done
  123. ;; AFTER
  124. ;; in 2  New-value = 1
  125. ;; out 2  New-value = 0
  126.  
  127. ;; AND-GATE
  128. ;; 'done
  129. ;; BEFORE
  130. ;; in3 2  New-value = 1
  131. ;; in4 2  New-value = 0
  132. ;; out2 2  New-value = 0
  133. ;; DURING
  134. ;; 'ok
  135. ;; 'done
  136. ;; AFTER
  137. ;; in3 5  New-value = 1
  138. ;; in4 5  New-value = 0
  139. ;; out2 5  New-value = 0
  140.  
  141. ;; OR-GATE
  142. ;; 'done
  143. ;; BEFORE
  144. ;; in1 5  New-value = 1
  145. ;; in2 5  New-value = 0
  146. ;; out1 5  New-value = 0
  147. ;; DURING
  148. ;; 'ok
  149. ;; out1 10  New-value = 1
  150. ;; 'done
  151. ;; AFTER
  152. ;; in1 10  New-value = 1
  153. ;; in2 10  New-value = 0
  154. ;; out1 10  New-value = 1
  155.  
  156. ;; HALF-ADDER
  157. ;; 'done
  158. ;; BEFORE
  159. ;; in5 10  New-value = 1
  160. ;; in6 10  New-value = 0
  161. ;; sum 10  New-value = 0
  162. ;; carry 10  New-value = 0
  163. ;; DURING
  164. ;; 'ok
  165. ;; sum 18  New-value = 1
  166. ;; 'done
  167. ;; AFTER
  168. ;; in5 18  New-value = 1
  169. ;; in6 18  New-value = 0
  170. ;; sum 18  New-value = 1
  171. ;; carry 18  New-value = 0
  172.  
  173. ;; FULL-ADDER
  174. ;; 'done
  175. ;; BEFORE
  176. ;; in7 18  New-value = 1
  177. ;; in8 18  New-value = 0
  178. ;; carry-in 18  New-value = 0
  179. ;; sum1 18  New-value = 0
  180. ;; carry-out 18  New-value = 0
  181. ;; DURING
  182. ;; 'ok
  183. ;; sum1 26  New-value = 1
  184. ;; 'done
  185. ;; AFTER
  186. ;; in7 26  New-value = 1
  187. ;; in8 26  New-value = 0
  188. ;; carry-in 26  New-value = 0
  189. ;; sum1 26  New-value = 1
  190. ;; carry-out 26  New-value = 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement