所有邻近城镇PROLOG的返回清单

时间:2012-01-24 10:55:47

标签: list prolog

在具有以下规则的程序中: 邻居(X,Y): - 链接(X,Y);链接(Y,X)。

表格链接(a,b)等已经陈述了一些事实

如何编写一个程序all_neighbours(L,X),它将所有邻近城镇的列表L返回给X?

我的尝试:

all_neighbours([Y|Tail],X):- neighbour(X,Y), fail.

1 个答案:

答案 0 :(得分:1)

您的尝试没有成功,因为您始终在第一个事实上失败,并且永远不会在数据库中找到剩余的事实。

最简单的方法是使用内置的findall/3谓词:

all_neighbours(L, X) :- findall(Y, neighbour(X, Y), L).