강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2014년10월3일 16:00 주제: 숙제 3 변경사항 및 스펙 정리 (10/13 14:00 기준) |
|
|
숙제 3에서의 질문/답변과 확정된 스펙을 모아놓은 게시글입니다.
이 글에 댓글로 질문을 하지 말아주세요. (질문은 게시판에 직접)
--
Exercise 1 "K- 실행기"
1) read semantics 구현은 read_int 를, write 는 print_int 를 사용합니다.
write 할 때 마지막에 print_endline 을 넣지 않습니다.
2) write 는 정수일 경우에만 출력하고, 그 외의 경우 예외를 냅니다.
의미 문서의 WRITE 부분에서 e => v 는 e => n 으로, write e => v 는 write e => n 으로 생각하시면 되겠습니다.
3) K.run 의 결과는 출력 대상이 아닙니다. 입출력은 read/write 로만 이루어집니다.
4) callv, callr 에서 부른 인자의 개수와 함수 인자의 개수가 다른 경우 예외를 냅니다. <strike>OCaml 표준 예외인 Invalid_argument 예외를 낼 것을 권장합니다. </strike>채점의 편의를 위해, 뼈대 코드의 Error 예외에 "Invalid_argument" 문자열을 인자로 사용하는 것으로 정하겠습니다. 즉 아래와 같이 하시면 됩니다.
코드: | raise (Error "Invalid_argument") |
만약 Ocaml 표준 예외인 Invalid_argument 예외를 내는 코드를 작성하셔서 감점이 되더라도, 클레임해 주시면 일체의 불이익 없이 수정해 드리겠습니다.
5) K- 코드를 해석하는 도중 '정의되지 않은 의미'를 만나면 항상 예외를 냅니다. 따로 본 게시글에 예외 이름을 명시하지 않는 한 모두 뼈대 코드의 Error 예외를 낼 것을 권장합니다. 4)의 경우를 제외하고는, Error 예외의 문자열은 자유롭게 사용하시면
됩니다.
---
Exercise 2 "K-프로그래밍: 거스름 방법의 수"
1) 뼈대 코드에 제공된 파서 기준으로 코딩해주세요.
(참고:파서파일은 parser.mly입니다.)
2) numch 함수 작성 후 in 안에서 정수를 하나 입력으로 받고(input), numch(input) 을 출력하는 코드까지 작성해 주세요.
예를 들면, 아래와 같은 코드가 나올 수 있습니다.
코드: | let input := 0 in
let proc numch (x) = ... in (
read input;
write (numch(input))
) |
3) numch 함수의 인자로는 양의 정수만 들어온다고 가정하셔도 됩니다.
(양의 정수 아닌 값이 인자로 들어올 경우 자유롭게 처리)
4) 우리나라에는 50원 동전이 있지만 본 숙제에서는 없는 것으로 간주하고 제외합니다.
(문제 스펙을 그대로 따라간다는 뜻)
--
Exercise 3 "K- 프로그래밍: compound data"
1) 뼈대 코드에 제공된 파서 기준으로 코딩해주세요.
(참고:파서파일은 parser.mly입니다.)
2) 구현해야 하는 모든 함수 작성 후 마지막을 in 으로 끝내주세요.
파싱 에러 나는 그대로 제출하시면 됩니다.
3) dft 함수를 작성할 때는 preorder 로 작성해 주세요.
4) bft 함수를 작성할 때는 왼편 자식 트리를 우선으로 계산합니다.
예를 들어, 아래 트리의 bft 순회 순서는 1->2->3 이 됩니다.
5) makeLtree/makeRtree처럼 한쪽에만 subtree를 가지고 있는 tree의 경우, 반대편에 empty tree가 매달려 있는 것으로 하겠습니다. 그리고 Empty tree가 나타나는 상황은 이것이 유일합니다. Leaf 양쪽에 빈 트리가 달려있다고 볼 수도 있겠지만, 이 과제에서는 그렇지 않은 것으로 정의합니다.
즉, 아래와 같은 결과가 나와야 합니다.
isEmpty(rTree(makeLtree (1, leaf (2)))) = true,
isEmpty(Ltree(makeRtree (1, leaf (2)))) = true
6) rTree/lTree의 인자로 empty tree나 leaf가 들어오는 경우의 예외처리, 그리고 nodeVal의 인자로 empty tree가 들어오는 경우의 예외처리는 테스트하지 않겠으니 자유롭게 구현하시면 됩니다.
7) Empty tree는 dft/bft 함수로 방문할 때 아무것도 출력하지 않으시면 됩니다.
-- |
|