salt26
가입: 2017년 9월 5일 올린 글: 2
|
올려짐: 2017년10월25일 22:28 주제: 4-3 테스트케이스 |
|
|
안녕하세요. 수강생 안단태입니다.
(실명으로 새로 가입하려고 했는데 가입 승인이 안 되었네요...)
"4-3. 탐사 준비"의 테스트케이스를 살짝 만들어 보았습니다.
코드: | (* Testcases *)
(* Print key type *)
let rec printK : key -> unit = fun k ->
match k with
| Bar -> print_string("-")
| Node (k1, k2) ->
print_string("(");
printK(k1);
print_string(",");
printK(k2);
print_string(")")
(* Print key list *)
let rec printKL : key list -> unit = fun kl ->
match kl with
| h::t ->
printK(h);
print_string(" ");
printKL(t)
| [] -> print_endline("")
let _ = printKL(getReady(End(NameBox "x")))
let _ = printKL(getReady(Guide("x", End(NameBox "x"))))
let _ = printKL(getReady(Branch(Guide("x", End(NameBox "x")), End(StarBox))))
let _ = printKL(getReady(Branch(Guide("x", End(NameBox "x")), Branch(Guide("y", End(NameBox "y")), End(StarBox)))))
let _ = printKL(getReady(Branch(Guide("x", End(NameBox "x")),Guide("y", End(NameBox "y")))))
let _ = printKL(getReady(Branch(End(NameBox "x"), End(StarBox))))
let _ = printKL(getReady(Branch(Branch(End(NameBox "x"), End(NameBox "y")), End(NameBox "y"))))
let _ = printKL(getReady(Guide("x", Guide("y", Branch(End(NameBox "x"), End(NameBox "y"))))))
let _ = printKL(getReady(Branch(Branch(End(NameBox "x"), End(StarBox)), Branch(End(NameBox "y"), End(NameBox "x")))))
(*let _ = printKL(getReady(Branch(Guide("x", Branch(End(NameBox "x"), End(NameBox "x"))), End(StarBox))))*)
(*let _ = printKL(getReady(Branch(Guide("x", Branch(End(NameBox "x"), End(NameBox "y"))), End(NameBox "y"))))*)
(*let _ = printKL(getReady(Branch(End(NameBox "x"), End(NameBox "x"))))*)
(*let _ = printKL(getReady(Branch(End(StarBox), End(StarBox))))*)
(*let _ = printKL(getReady(Branch(End(NameBox "x"), Guide("x", End(NameBox "x")))))*)
|
위 코드를 맨 뒤에 붙이고 돌려보셨을 때 다음과 같이 나오면 정상입니다. (같은 줄에서 나오는 순서는 상관 없습니다.)
코드: | -
-
-
-
(-,-) -
(-,-) -
(-,(-,-)) -
(-,-) -
(-,(-,-)) - ((-,(-,-)),-)
|
맨 밑에 주석 처리된 5개의 테스트케이스는 IMPOSSIBLE 예외를 띄우는 테스트케이스입니다. 하나씩 주석을 해제하면서 돌려보시면 됩니다.
혹시 이상이 있으면 댓글로 지적해주시면 감사하겠습니다. |
|
김성국17
가입: 2017년 9월 15일 올린 글: 16
|
올려짐: 2017년10월26일 12:15 주제: |
|
|
주석 처리된 마지막 예는 IMPOSSIBLE이 아닌 것 같습니다.
일단 두 NameBox "x"가 서로 다른 모양의 열쇠를 갖을 수 있다고 봐야하지 않나 생각합니다.
같은 표지판으로 묶여 있는 경우에는, "[x] e1 에서 e1안의 x는 모두 a 모양이다" 라는 말이 있어,
e1안의 x는 모두 같은 열쇠(a)로 열린다는 단서가 있지만,
표지판으로 묶이지 않은 상자들의 경우 단순히 이름이 같다고 해서 같은 모양의 열쇠로 열려야 한다고 하는 것은 추가적인 단서를 다는 격이라 조금 부자연스럽지 않나 생각합니다. |
|