2014-03-06 2 views
0

이것은 더 큰 문제의 일부이므로 잘못된 방법으로 생각할 수도 있습니다. 그러나 여기에 간다. 하나씩 증가

I 다음 "전환"규칙이 있습니다

//if in state(A,B,C), move to state C 
trans(state(A, B, C), state(A, B, D is C + 1), added_one). 

내가 C.

에 좀 더 배경 하나를 추가 할 수있는 방법을 마련하기 위해 노력하고 있어요 : 나는 "크로싱"을하고있는 중이을 문제, IE 일련의 규칙을 어 기지 않고 강을 가로 질러이 동물들을 사십시오. C는 보트의 동물 수이며 2를 능가 할 수 없습니다 (나는 < = 2를 처리하는 규칙이 다릅니다).

현재 내가 사용하는 방법은 D를 사용하는 것처럼 보이지 않습니다. "추적"기능을 사용할 때 D는 항상 상관 없습니다.

어떻게해야합니까? 고맙습니다.

EDIT : 코드.

initial(state( 3, 3, 1, 0, 0, 0, 0)). 
final( state( 0, 0, 0, 3, 3, 1, 0)). 

//BCpp stands for boatcount++. 
BCpp is BoatCount + 1, 
trans(state(2, LF, 1, RH, RF, 0 , BoatCount) , state(1, LF, 1, RH, RF, 0, BCpp), hen_in_left_boat). 

BCpp is BoatCount + 1, 
trans(state(1, LF, 1, RH, RF, 0 , BoatCount) , state(0, LF, 1, RH, RF, 0, BCpp), hen_in_left_boat). 

//and so on for a bunch of transitions. 
//the code produces an error at the first line "BCpp is BoatCount + 1," 

답변

0

@ mbratch의 답변을 바탕으로 추측하고 확인하여 알아 냈습니다.

D is C + 1, 
trans(state(A, B, C), state(A, B, D), added_one). 

오류를 던지고 있었다, 그래서 나는 그것을 전환 : 그것은 이제 제대로 실행

trans(state(A, B, C), state(A, B, D)) :- D is C + 1. 

. 그래,이 부분 어쨌든 : (

+0

OK. 이것은 당신이 달성하려했던 것이 원래 문제인지 명확하지 않았습니다. 새로운 문제가 생길 수 있으므로 새로운 문제 진술을 자유롭게 게시하십시오. – lurker

관련 문제