김태훈
가입: 2010년 9월 6일 올린 글: 91
|
올려짐: 2010년9월29일 23:16 주제: 과제2 테스트셋 작년버전입니다. |
|
|
역시 작년 게시판에서 퍼왔습니다만.. 4번문제 셋은 되는 것인지 잘 모르겠고, 5번은 없습니다;;ㅎㅎ 역시 작년 그 선배님께 감사합시다 ㅎㅎ
------------------------------------------------------------
문제가 묘하게 다단계라서 테스트셋 만들기가 쉽지 않네요.
내부 구현이 드러나지 않는 테스트셋.
미로검증의 경우는 내부 구현 공개 없이 테스트는 아예 불가능한 것 같군요. 어둠의 경로(...)를 이용하시거나 가능하면 직접 구현해보세요. 자료구조에서 graph 배우셨을테니 잘 응용하면 그리 어렵진 않을겁니다.
트리 테스트 셋입니다. 트리 잘못짜면 다음 세문제 돌리다 에러났을때 트리가 틀린건지 다음문제가 틀린건지 모르는 사태가 발생합니다.
(define mytree (node (list (leaf (list 'node 'leaf ())) (node (list (leaf 'node) (leaf (list 1 2 3)) (leaf ()))) (node (list (leaf ()) (leaf (list 'leaf ())) (leaf (list ())))))))
> (is-empty-tree? mytree)
#f
> (is-leaf? mytree)
#f
>(is-leaf? (nth-child mytree 0))
#t
> (leaf-val (nth-child mytree 0))
(node leaf ())
> (is-leaf? (nth-child mytree 1))
#f
> (is-leaf? (nth-child (nth-child mytree 1) 1))
#t
> (leaf-val (nth-child (nth-child mytree 1) 1))
(1 2 3)
> (leaf-val (nth-child (nth-child mytree 1) 0))
node
> (leaf-val (nth-child (nth-child mytree 1) 2))
()
> (is-empty-tree? (nth-child (nth-child mytree 1) 2))
#f
> (leaf-val (nth-child (nth-child mytree 2) 0))
()
> (leaf-val (nth-child (nth-child mytree 2) 1))
(leaf ())
> (leaf-val (nth-child (nth-child mytree 2) 2))
(())
> (is-empty-tree? (leaf ()))
#f
> (is-empty-tree? (node ()))
#t
> (is-empty-tree? (node (list (leaf ()) (node ()))))
#f
> (is-empty-tree? (nth-child (node (list (leaf ()) (node ()))) 1))
#t
모빌 테스트셋입니다. 역시 모빌이 '제대로 만들어지지' 않는다면 balanced나 weight도 제대로 작동 안할테니 만드는 함수는 따로 테스트 안합니다. (덧붙여, 만드는 함수만 수행시키면 실행 결과가 구현에 종속적이라 올릴수가 없습니다)
> (weight (make-mobile (make-branch 12 (make-mobile (make-branch 3 (make-mobile (make-branch 2 (model 2)) (make-branch 2 (make-mobile (make-branch 3 (model 1)) (make-branch 3 (model 1)))))) (make-branch 6 (model 2)))) (make-branch 18 (make-mobile (make-branch 3 (model 1)) (make-branch 1 (model 3))))))
10
> (is-balanced? (make-mobile (make-branch 12 (make-mobile (make-branch 3 (make-mobile (make-branch 2 (model 2)) (make-branch 2 (make-mobile (make-branch 3 (model 1)) (make-branch 3 (model 1)))))) (make-branch 6 (model 2)))) (make-branch 18 (make-mobile (make-branch 3 (model 1)) (make-branch 1 (model 3))))))
#t
> (is-balanced? (make-mobile (make-branch 12 (make-mobile (make-branch 3 (make-mobile (make-branch 3 (model 2)) (make-branch 2 (make-mobile (make-branch 3 (model 1)) (make-branch 3 (model 1)))))) (make-branch 6 (model 2)))) (make-branch 18 (make-mobile (make-branch 3 (model 1)) (make-branch 1 (model 3))))))
#f
> (is-balanced? (make-mobile (make-branch 12 (make-mobile (make-branch 3 (make-mobile (make-branch 2 (model 2)) (make-branch 2 (make-mobile (make-branch 3 (model 1)) (make-branch 3 (model 1)))))) (make-branch 4 (model 3)))) (make-branch 18 (make-mobile (make-branch 3 (model 1)) (make-branch 1 (model 3))))))
#f
마지막으로 논리회로 테스트 셋입니다.
두가지 4-input boolean circuit으로 truth table을 찍게 해버렸으니
이게 제대로 돌아가면 거의 맞았다고 보셔도 될 듯 합니다. 나머지 함수들은 아마도.. output 내부 구현에서 사용하고 있을테니 따로 테스트 안합니다.
> (let ((logic (lambda (a b c d) (output (cor (cor (cand (cand (cnot a) b) (cnot c)) (cand (cand (cnot a) (cnot c)) d)) (cand (cand (cnot a) (cnot b)) (cand c (cnot d))))))))
(list
(logic zero zero zero zero)
(logic zero zero zero one)
(logic zero zero one zero)
(logic zero zero one one)
(logic zero one zero zero)
(logic zero one zero one)
(logic zero one one zero)
(logic zero one one one)
(logic one zero zero zero)
(logic one zero zero one)
(logic one zero one zero)
(logic one zero one one)
(logic one one zero zero)
(logic one one zero one)
(logic one one one zero)
(logic one one one one)))
(0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0)
> (let ((logic (lambda (a b c d) (output (cor (cor (cand b (cnot c)) (cand (cnot a) b)) (cand (cand a (cnot b)) (cand c d)))))))
(list
(logic zero zero zero zero)
(logic zero zero zero one)
(logic zero zero one zero)
(logic zero zero one one)
(logic zero one zero zero)
(logic zero one zero one)
(logic zero one one zero)
(logic zero one one one)
(logic one zero zero zero)
(logic one zero zero one)
(logic one zero one zero)
(logic one zero one one)
(logic one one zero zero)
(logic one one zero one)
(logic one one one zero)
(logic one one one one)))
(0 0 0 0 1 1 1 1 0 0 0 1 1 1 0 0)
-----------------------------------------------
아마 5번 문제 셋은 cnot,cand 등이 올해 문제의 not-circuit,and-circuit 등을 의미 하는 것 같네요;;ㅋㅋ |
|