所以我有一个火车站数据库,简单地标记为火车(st1,st4)。等
我想实现一个find all谓词,以便用户可以查询所有路径(X,Y,Paths)。 代码将返回从X到Y的所有路径。
任何帮助都会很棒,谢谢
答案 0 :(得分: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.
我希望这就是你要找的东西。
答案 1 :(得分:0)
与@sowa相同,但最后一行更改为:
allpaths(X, Y, Ps) :- findall(P, find(X, Y, P), Ps).
findall/3
是一个内置的Prolog谓词。