조승한
가입: 2021년 3월 11일 올린 글: 31
|
올려짐: 2022년3월16일 16:44 주제: [숙제 2] 공지사항 및 보충 스펙 |
|
|
안녕하세요, 수강생 여러분.
숙제 2가 올라왔습니다.
내용 : http://ropas.snu.ac.kr/~kwang/4190.310/22/hw2.pdf
제출 : http://ropas.snu.ac.kr/~ta/4190.310/22/submit/index.pl
기한 : 3/25 밤 11시 59분 59초
제출 페이지에서 학번을 아이디로 하여 가입(register)하신 다음 해당 계정으로 로그인하여 숙제를 제출하시면 됩니다. 가입 기간은 4/15 일까지입니다.
* 과제 관련 주의 사항
과제를 제출하기 전에 꼭 주의사항(https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=7075)을 확인해 주세요.
* 뼈대코드
숙제 2는 뼈대코드가 없습니다
* 숙제 스펙 세부사항
(이 글에 답글로 질문하지 말아 주세요. 별도의 게시글로 질문해 주시기 바랍니다!)
Exercise 1 "반복기"
- 인자 f 로는 a 타입을 인자로 받으면, a 타입을 내놓는 함수만 들어옵니다
- 'n' 이 음수인 입력에 대해서는, 어떤 값을 내놓아도 무방합니다. 이런 경우는 채점시 테스트하지 않겠습니다.
--
Exercise 2 "대진표 스트링"
--
Exercise 3 "Mathemadiga"
- SUM 혹은 TIMES 의 인자로 빈 리스트가 들어올 경우 InvalidArgument 예외를 냅니다.
아래 코드를 참고하시고, 숙제 제출시 포함해 주세요.
코드: | exception InvalidArgument |
--
Exercise 4 "우선큐"
--
Exercise 5 "짚-짚-나무"
- 아래 NOMOVE 예외를 선언해 주셔야 합니다.
코드: | exception NOMOVE of string |
- 그리고, goLeft함수의 마지막 줄(네번째 줄)은 아래와 같이 수정해야 합니다.
(raise의 인자를 괄호로 감싸야 합니다.)
코드: | | LOC(t, HAND([],up,right)) -> raise (NOMOVE "left of first") |
- goDown은 자식 노드의 맨 왼쪽 으로 가는 것으로 하겠습니다. 갈 수 없을 경우 NOMOVE 예외로 처리해 주세요
- goLeft는 현재 위치의 sibling(같은 부모노드를 가지는 형제노드)중 가장 가까운 왼쪽 sibling으로 옮겨가는 함수입니다.
- goRight도 마찬가지로 가장 가까운 오른쪽 형제노드로 옮겨가는 함수입니다.
- goDown에 대한 위의 보충스펙과 함께 생각해보시면, goUp, goDown, goRight, goLeft 네 함수로, 트리의 모든 노드를 방문할 수 있다는 것을 알 수 있습니다.
--
Exercise 6 "Queue = 2 Stacks"
- 어떤 코드를 작성해야 하는지에 대해서 : 숙제의 템플릿을 그대로 따라가는 IntListQ 모듈을 구현하는 것으로 하겠습니다.
숙제 문서에 정의된 module type Queue를 숙제 파일에 포함하시고, 제시된 IntListQ 모듈을 완성하세요.
- 여러분이 구현한 IntListQ가 Queue 모듈 타입을 만족하는지 꼭 확인 해 주세요. 확인해 보는 방법은, 끝에 아래와 같이 한 줄을 추가하고 제대로 컴파일되는지 확인해 보시면 됩니다. 물론 제출하실 때에는 이 라인은 지워주셔야 합니다.
코드: | module ValidIntListQ = (IntListQ : Queue) |
감사합니다.
조교 드림
TA 조승한
e-mail: shjo@ropas.snu.ac.kr
TA 김훈
e-mail: hkim@ropas.snu.ac.kr |
|