Prolog找到了所有帮助

时间:2010-11-27 13:38:51

标签: prolog

所以我有一个火车站数据库,简单地标记为火车(st1,st4)。等

我想实现一个find all谓词,以便用户可以查询所有路径(X,Y,Paths)。 代码将返回从X到Y的所有路径。

任何帮助都会很棒,谢谢

2 个答案:

答案 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谓词。