我是Prolog的新手。我在下面写了基本代码。
flight(acompany, paris, 7).
flight(bcompany,paris,7).
flight(ccompany,paris,7).
flight(dcompany,paris,7).
search([X],Y,Z) :- flight(X,Y,Z).
search([X|T],Y,Z) :- search(T,Y,Z) , flight(X,Y,Z).
我想做两件事。 首先我查询为
?- search(X, paris,7).
prolog告诉我的第一件事是
X = [acompany]
但我希望在第一个查询中看到列表中的所有元素。
即
X = [acompany, bcompany, ccompany, dcompany]
我想要的第二件事是避免重复列表中的元素。
例如;
X = [acompany] ;
X = [bcompany] ;
X = [ccompany] ;
X = [dcompany] ;
X = [acompany, acompany] ;
我不想要这样的最后一个清单。
我该如何解决这两件事?感谢。
答案 0 :(得分:1)
?- setof(X, flight(X, _, _), Xs).
Xs = [acompany, bcompany, ccompany, dcompany].