2010-11-27 25 views
0

所以我有一個火車站的數據庫,簡單地標記爲火車(st1,st4)。 etcProlog findall help

我想實現查找所有謂詞,以便用戶可以查詢所有路徑(X,Y,路徑)。 和代碼將從X返回所有的路徑爲Y.

任何幫助將是真棒感謝

+0

這是一個功課問題嗎?你有一個單一的路徑謂詞「路徑(X,Y,路徑)」? – 2010-11-27 13:53:51

回答

0
train(st1,st4). 
train(st1,st2). 
train(st2,st3). 
train(st3,st4). 
train(st4,st5). 
train(st3,st6). 
train(st6,st5). 
find(X,Y,[X|Y]):-train(X,Y). 
find(X,Y,[X|Q]):-train(X,Z),find(Z,Y,Q). 
findall2(X,Y):-find(X,Y,Q),write(Q),nl,fail. 

我希望這就是你所期待的。

0

相同的答案@sowa,但最後一行改爲:

allpaths(X, Y, Ps) :- findall(P, find(X, Y, P), Ps). 

findall/3是一個內置的Prolog謂詞。