domains
list=symbol*
predicates
path(symbol,symbol)
solve(symbol,symbol,list)
insert(symbol,list,list)
clauses
path(a,b).
path(b,c).
path(c,d).
path(d,e).
path(a,d).
path(c,e).
solve(X, Z, P):-
path(X,Z),
insert(Z,Temp,P),
P=Temp.
solve(X,Z,P):-
path(X,Y),
insert(Y,Temp,P),
P=Temp,
solve(Y,Z,P).
insert(X,[X|Tail],Tail).
insert(X,[Y|Tail],[Y|Tail1]):-
insert(X,Tail,Tail1).
要打印的我已經跟着去從一個點到another.But越來越errors.For實例的路徑,我想:要打印的路徑,但得到的錯誤
goal
solve(a,c,P).
回答:P = [a,b,c]
請說明你得到了什麼樣的錯誤,以及這是哪種非標準的Prolog方言。 –
iam使用turbo prolog,因此我不知道錯誤是什麼,但光標指向第一個插入謂詞中的尾部。 – Zohaib
瞭解Prolog的第一件事是統一不是任務。你的構造函數'insert(Z,Temp,P),P = Temp'與'insert/3'的第一個子句和目標'solve(a,c,P)'一起導致循環數據結構(即, 'P = [b | P]')。你得到的錯誤取決於Prolog系統。 – twinterer