 |
|
| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
노건일 손님
|
올려짐: 2009년9월23일 20:24 주제: ex4 질문입니다. |
|
|
어째 질문을 할 수록 난이도가 점점 올라가는듯하네요..
그래도 모르는건 물어봐야겠죠!
문제4번에 나무구조의 예로 (a*b + c*d )를 들고
두번째 곱셈에서의 위치를
LOC(LEAF *,
HAND([LEAF c],
HAND([LEAF +; NODE [LEAF a; LEAF *; LEAF b]],
TOP,
[]),
[LEAF d]))
라고 정의했는데요, 일단 제가 상상하는 나무구조는 아래와 같습니다.
TOP
`
/ | \ ` : node
` + `
/|\ /|\
a * b c * d
그럼 c와 d사이에 있는 *의 입장에서(*의 위치에서)
HAND(left, zipper, right)라는 zipper의 구조에 따라
left = LEAF c
right = LEAF d
zipper(혹은 up) = HAND([LEAF +; NODE [LEAF a; LEAF *; LEAF b]],
TOP,
[])
이고, 다시 그 안의 zipper를 분해하면
left = [LEAF +; NODE [LEAF a; LEAF *; LEAF b]] <--
right = []
zipper = TOP
인데, 여기서 left부분이 잘 이해가 되지 않습니다.
`
/ | \
` + `
/|\ /|\
a * b c * d
어떻게 이 왼쪽 model이 저렇게 표현되는지...
오히려 left = [NODE [LEAF a; LEAF *; LEAF b] ; LEAF +]가 되는게 아닌지..
서론이 굉장히 길었지만, 결국 질문은
1. 제가 상상하고 있는 나무구조가 올바른가요?
2. 혹시 zipper의 왼쪽나무를 셀때는 오른쪽 -> 왼쪽의 순서로 가지를 세나요?
3. 실제로 코딩할때는 LEAF "a" 를 사용하는게 맞나요? (string이니까...) |
|
| 위로 |
|
 |
허기홍
가입: 2007년 9월 27일 올린 글: 231
|
올려짐: 2009년9월23일 20:49 주제: |
|
|
1. 그림이 보기 힘들지만... 잘 이해하신 것 같습니다.
2. 맞습니다. 왼쪽 나무든 오른쪽 나무든 묘사할 때는 현재 위치에서 가까운 곳부터 묘사합니다. (구현해보시면 그게 더 편하다는 것을 느끼실겁니다.)
3. 맞습니다. 스트링입니다. |
|
| 위로 |
|
 |
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|