2012-10-18 10 views
1

CS 숙제를 위해이 문제를 알아 내려고하고 있습니다. 숙제로 태그를 달았습니다. 올바른 방향으로 나아가 야합니다. 편집 : 분명히 '숙제'태그는 더 이상 사용되지 않으며 더 이상 사용되지 않습니다. 어쨌든, 나는 Prolog에 주어진 규칙 목록을 결정하여 타워를 해결할 수있는 규칙 정의를 작성해야합니다. 내 교수는 매우 불분명하다, 지시 나쁜 알고 있지만, 내가 가진 모든 아래의 조건이 충족되어야한다는 것입니다 :프롤로그의 하노이 타워

?- hanoi(1,l,c,r,[[l,r]]). 
true. 

?- hanoi(1,l,c,r,[[c,r]]). 
false. 

?- hanoi(2,l,c,r,[[l,c],[l,r],[c,r]]). 
true. 

?- hanoi(3,l,c,r,M). 
M = [[l,r], [l,c], [r,c], [l,r], [c,l], [c,r], [l,r]]. 

나는 위의이되어 어떤 사소한 단서를 암시하지 않은 내가 할 수 있도록, 어떤지도도 크게 감사하겠습니다! 내가 말했듯이 이것은 숙제 문제이다. (설명이 부족하다는 점을 감안할 때 겉으로는 어리석게도 어려운 문제 임에도 불구하고) 내가 원하는만큼 답을 원한다. 무슨 일이 일어나고 있는지 정확하게 이해할 수 있습니다.

대단히 감사합니다!

+2

당신은 이것을 확인해야합니다. http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/2_3.html –

+1

이것은 거의 설명이 필요하지 않습니다. 나는 교수님의 비판을 아끼지 않을 것입니다. – NotAUser

+0

@ user1638891 나는 그것을 이해 한 후에 될 것이라고 확신합니다. 그는 단지 "이 목록은 [a, b]와 같이 작성되어이 문제를 해결할 수 있습니다."라고 말했기 때문에 이것이 정말로 무슨 뜻인지 전혀 알지 못합니다. – roboguy12

답변

2

여기, 당신이 문제에 대해 무엇을 알고하면 (자) 가정 해, 그 표현의 의미는 다음과 같습니다

hanoi(1,l,c,r,[[l,r]]). 

이 분명 초기 상태에서 왼쪽 타워에 하나 개의 요소가 있음을 의미한다. l, c 및 r은 탑의 이름입니다. 마지막 인자는 해결책입니다. 솔루션은 동작 목록입니다. 각각의 움직임은 쌍을 이룹니다. 따라서 이전의 원자에서 정리 된 솔루션은 다음과 같습니다. 왼쪽 타워의 요소를 오른쪽 타워로 이동합니다.

hanoi(1,l,c,r,[[c,r]]). 

해결책이 잘못되어 실패합니다. 초기 상태에는 왼쪽 타워에 요소 만 있으므로 중앙 타워에서 이동할 수 없으면 요소를 이동할 수 없습니다.

hanoi(2,l,c,r,[[l,c],[l,r],[c,r]]). 

이것은 왼쪽에서 가운데, 왼쪽에서 오른쪽, 가운데에서 오른쪽의 세 가지 동작으로 해결됩니다. 마지막 쿼리에 대해서도 마찬가지입니다.