Prolog 查找所有帮助

发布于 2024-10-05 06:01:54 字数 124 浏览 0 评论 0原文

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

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

任何帮助都会很棒,谢谢

So i have a database of train stations simply labelled train(st1, st4). etc

I want to implement a find all predicate so that a user could query allpaths(X,Y, Paths).
And the code would return all paths from X to Y.

Any help would be awesome thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猥琐帝 2024-10-12 06:01:54
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.

我希望这就是您正在寻找的东西。

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.

I hope it's what you were looking for.

夜深人未静 2024-10-12 06:01:54

与 @sowa 的答案相同,但最后一行更改为:

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

findall/3 是内置的 Prolog 谓词。

Same answer as @sowa, but with the last line changed to:

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

findall/3 is a built-in Prolog predicate.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文