이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
장민석
가입: 2006년 9월 5일 올린 글: 165
|
올려짐: 2006년10월12일 9:36 주제: 3-2 큐 구현 관련 |
|
|
세 함수를 구현하는 것인데요,,
코드: | emptyQ: Q
enQ: Q * int -> Q
deQ: Q -> int * Q |
enQ는 큐에 정수를 집어넣는 거고 deQ는 큐에서 정수 하나를 빼는 것일 텐데요, emptyQ는 무엇인가요? 빈큐 즉 ([], [])를 하나 새로 만드는 함수인가요? (하지만 우리가 만든 K-언어에는 null이나 빈 레코드 등을 정의하는 것이 허용되지 않는데요...)
그리고 제 생각엔 위의 세 함수를 정의하는 것 외에도 테스트 코드를 "2.n"에 포함시켜야할 것 같은데요. 큐가 제대로 동작하는 것을 보여주는 테스트 코드는 임의로 구현해서 넣으면 되는 것인지요?
장민석 가 2006년10월12일 19:00에 수정함, 총 1 번 수정됨 |
|
위로 |
|
|
장민석
가입: 2006년 9월 5일 올린 글: 165
|
올려짐: 2006년10월12일 18:19 주제: 덧붙여 |
|
|
추가적인 질문입니다.
1. 우리가 만든 K-언어에서는 함수가 인자를 최대 하나 가질 수 있는데요. 위의 세 함수들은 스펙상으론 여러 개의 인자를 받거나 리턴하는 것처럼 보입니다. 어떻게 해야 하나요? 레코드나 리스트로 대체(?)해야 하나요.
...
2. 레코드로 리스트를 구현하기 위해 cons 함수를 정의하려고 하니, 복수의 인자를 받는 함수가 필요해서 좀 난감합니다. 인자를 레코드로 받는 건 아무 의미가 없는 것 같고요... OTL |
|
위로 |
|
|
이희종
가입: 2006년 3월 7일 올린 글: 50
|
올려짐: 2006년10월13일 18:27 주제: |
|
|
emptyQ는 함수는 아닙니다. 타입을 보시면 그냥 Q타입인것을 알 수 있습니다.
하나의 constant라고 생각하시면 될듯 합니다.
Q타입에 사용되는 리스트의 구체적인 정의는 어떻게 하셔도 상관 없습니다. 다만 주어진 알고리즘을 지키며 동작만 잘 되게 해주세요.
예를 들면 enQ에 emptyQ와 1을 인자로 넣어주었을때 Q타입의 어떤 값이 나오고(내부적으로 1을 포함하고 있는)
이 값을 다시 deQ에 넣어주었을 때 1과 emptyQ가 나오면 되겠죠.
그리고, 테스트 코드는 포함하시면 안됩니다. 포함하시려면 주석처리 해주세요. |
|
위로 |
|
|
장민석
가입: 2006년 9월 5일 올린 글: 165
|
올려짐: 2006년10월13일 19:24 주제: |
|
|
인용: | 예를 들면 enQ에 emptyQ와 1을 인자로 넣어주었을때 Q타입의 어떤 값이 나오고(내부적으로 1을 포함하고 있는)
이 값을 다시 deQ에 넣어주었을 때 1과 emptyQ가 나오면 되겠죠. |
우리가 만든 K- 언어는 함수 인자를 하나만 허용하지 않나요? 그리고 리턴값도 하나일 텐데요....제가 뭔가 심각하게 착각하고 있는 것 같습니다만,;;
call by ref로 해결할까 생각도 해봤습니다만...함수 정의랄까 사용자 인터페이스랄까 아무튼 enQ와 deQ의 껍데기에 대한 정의가 좀 모호한 것 같습니다. 심지어 타입도 없는 언어라 더 헷갈리네요. |
|
위로 |
|
|
이준희
가입: 2006년 9월 18일 올린 글: 43
|
올려짐: 2006년10월13일 19:45 주제: |
|
|
작년 게시판에 있는 글을 참고하면, 인자가 여러개인 함수는 레코드를 인자로 넘겨주는 방식으로 구현하라고 하더군요.
즉, 무조건 인자가 레코드로 넘어온다는 가정하에 enQ를 만들고, deQ는 레코드를 반환하는 식으로 해야 할것 같네요. _________________ ... |
|
위로 |
|
|
|