первый запрос и дублирующие элементы в списке в Прологе - PullRequest
0 голосов
/ 24 апреля 2011

Я новичок в Прологе.Я написал основной код ниже.

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).

, первый пролог покажет мне:

X = [acompany]

Но я хочу видеть все элементы в списке при первом запросе.

ie

X = [acompany, bcompany, ccompany, dcompany]

И второе, что я хочу, это избегать дублирования элементов в списке.

Например;

X = [acompany] ;
X = [bcompany] ;
X = [ccompany] ;
X = [dcompany] ;
X = [acompany, acompany] ;

Я не хочу такихпоследний список.

Как я могу исправить эти две вещи?Спасибо.

1 Ответ

1 голос
/ 24 апреля 2011
?- setof(X, flight(X, _, _), Xs).
Xs = [acompany, bcompany, ccompany, dcompany].
...