이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
임성철
가입: 2012년 9월 8일 올린 글: 35
|
올려짐: 2012년10월28일 0:11 주제: [실습 5] 물건 중심으로 구현할 때, step 함수를 짤 때 map 함수를 쓰니까 값이 변하네요.. |
|
|
코드: |
(define w1 (make-wire "w1"))
(define w2 (make-wire "w2"))
(define w3 (make-wire "w3"))
(define and1 (and-gate w1 w2 w3))
(define not1 (not-gate w3 w1))
(define switch1 (switch w2))
(define circuit1 (add-gate-to-circuit "and1" and1 empty-circuit))
(define circuit2 (add-gate-to-circuit "not1" not1 circuit1))
(define circuit3 (add-gate-to-circuit "switch1" switch1 circuit2))
(define circuit-state
(set-wire-volts
(list (cons "w1" one) (cons "w2" one) (cons "w3" one))
circuit3))
(step circuit-state)
|
이런 경우
map 함수를 써서 물건 중심으로 구현하면
(("switch1" switch (wire "w2" 1)) ("not1" not (wire "w3" 1) (wire "w1" 1)) ("and1" and (wire "w1" 1) (wire "w2" 1) (wire "w3" 1)))
중 not1 게이트에서 w3이 1이므로 w1은 0이 됩니다.
그리고 다음, and1 게이트를 호출할 텐데,
이때 w1의 값이 0이 되어있네요..
그래서 원치 않게 w3은 0이 되어버립니다.
이를 방지하기 위해선 같은 circuit을 하나 더 복사하는 방법을 쓰면 될 것 같은데요,
(not에서 w1이 0이 될 때 and에서의 w1은 다른 circuit에서 읽어올 수 있도록)
물건 중심 구현에서 circuit을 복사하는 게 가능할까요? |
|
위로 |
|
 |
최민아
가입: 2009년 9월 28일 올린 글: 236
|
올려짐: 2012년10월28일 2:55 주제: |
|
|
다양한 구현 방법이 있을 수 있지만
회로 안에 wire를 2개씩 가지고 다니는 것도 한 방법입니다. |
|
위로 |
|
 |
임성철
가입: 2012년 9월 8일 올린 글: 35
|
올려짐: 2012년10월28일 16:14 주제: |
|
|
답변 감사합니다~ |
|
위로 |
|
 |
|