게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

4번문제 nth child에 대해서

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Spring 2006)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
최원태
손님





올리기올려짐: 2006년4월3일 19:07    주제: 4번문제 nth child에 대해서 인용과 함께 답변

1.
nth-child 함수는 인자로 tree타입과 nat타입을 받는 것으로 되어있습니다.

node타입의 경우에는 문제가 없지만,

leaf타입의 경우에는 어떻게 처리해야 하는지 난감합니다.

leaf타입의 값을 0번째(혹은 첫번째) 자식이라고 봐야 하나요?
아니면 자신의 값이라고 봐야 하나요?

2.
5,6,7번 문제를 풀다보면

branch, mobile, zero, one, and, or, not 타입을 체크해야 합니다.

그런데 타입을 체크하려고 하면 구현에 따라서는 자식이 몇명인지
확인할필요가 있습니다.

이럴때 (null? (cdr (cdr (cdr (cdr x)))))로 해결할 수 도 있지만
자식이 몇개인지 확인해주는 how-many-children? 함수를 정의하면
좋을 것 같습니다.

그런데 이 함수는 4번에서 정의하라고 한 함수가 아닌, 트리 인터페이스 므로
정의하면 안되죠.

그렇다고 저 함수를 쓰지 않으면 자식의 수를 확인 하기 위해서 cdr cdr cdr로 트리 내부구조를 휘저어서 데이터 추상화에 문제가 생기는 것 같습니다.

어떻게 하면 좋겠습니까?
위로
박대준



가입: 2005년 10월 7일
올린 글: 245

올리기올려짐: 2006년4월4일 1:21    주제: 인용과 함께 답변

최원태 씀:
leaf타입의 경우에는 어떻게 처리해야 하는지 난감합니다.

nth-child 는 node 로 만들어진 tree 에서만 정의됩니다.

최원태 씀:
그런데 타입을 체크하려고 하면 구현에 따라서는 자식이 몇명인지
확인할필요가 있습니다.

어떻게 구현하셨는지 모르기때문에, 답변을 정확히 해 드리기 힘듭니다.
만약, 일반적인 구현이라면 자식의 개수에 따른 에러체크까지는 안하셔도 됩니다.
특별한 구현이라면 게시판에서 직접적으로 언급하기가 힘드니,
화요일 수업시간 이후에 개인적으로 연구실로 찾아오시기 바랍니다.
(연구실은 수업 강의실 맞은편에 있습니다.)


덧붙여..

최원태 씀:

그런데 이 함수는 4번에서 정의하라고 한 함수가 아닌, 트리 인터페이스 므로
정의하면 안되죠.

그렇다고 저 함수를 쓰지 않으면 자식의 수를 확인 하기 위해서 cdr cdr cdr로 트리 내부구조를 휘저어서 데이터 추상화에 문제가 생기는 것 같습니다.

문제의 의도를 정확히 파악하신 것 같군요. 보기 좋습니다.

최원태 씀:
이럴때 (null? (cdr (cdr (cdr (cdr x)))))로 해결할 수 도 있지만

다음과 같은 방법을 사용하면 괄호의 부담을 덜 수 있습니다.
코드:
(null? (cddddr x))

참고
http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/Pairs.html#index-caar-1140
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Spring 2006) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay