Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Prolog > Исключение повторов вывода


Автор: Vaz007 25.2.2015, 17:01
Здравствуйте , имеется БД генеалогического древа ,представленная в коде.
Хочу сделать вывод братьев и сестер без повторов (фото вывода прикрепил).
Подскажите пожалуйста как можно сделать его используя cut (!).

Код

male("Владислав").
male("Олег").
male("Данил").
male("Антон").
male("Борис").
male("Владимир").
male("Григорий").
male("Петр").
male("Роман").

female("София").
female("Ксения").
female("Вероника").
female("Мария").
female("Диана").
female("Евгения").
female("Влада").
female("Юлия").
female("Екатерина").
female("Анна").
female("Елена").
female("Наталья").

pair("Владислав","София").
pair("Олег","Ксения").
pair("Владимир","Вероника").
pair("Данил","Диана").
pair("Антон","Евгения").
pair("Борис","Влада").
pair("Виктор","Юлия").
pair("Илья","Екатерина").
pair("Григорий","Анна").
pair("Петр","Елена").
pair("Роман","Наталья").

child("Олег","Владислав").
child("Олег","София").
child("Вероника","Владислав").
child("Вероника","София").
child("Мария","Владислав").
child("Мария","София").
child("Данил","Олег").
child("Данил","Ксения").
child("Юлия","Олег").
child("Юлия","Ксения").
child("Анна","Мария").
child("Евгения","Диана").
child("Евгения","Данил").
child("Екатерина","Юлия").
child("Екатерина","Виктор").
child("Петр","Анна").
child("Петр","Григорий").
child("Борис","Антон").
child("Борис","Евгения").
child("Наталья","Елена").
child("Наталья","Петр").



parent(X,Y):-
    child(Y,X).

father(X,Y):-
    male(X),
    parent(X,Y).

mother(X,Y):-
    female(X),
    parent(X,Y).

sibling(X,Y):-  
    parent(Z,X),  
    parent(Z,Y),
    X =\= Y.


?- sibling(X,Y),write("Брат / сестра: "+X+" для "+Y),nl,fail.


Автор: Vaz007 26.2.2015, 18:26
решилась задача, на всякий ,если кому понадобиться :
Код

sibs(X,Y):-                       
    child(X,Z),
    child(Y,Z),
    X=\=Y,!.

sibling(X,Y):-  
    (male(X);female(X)),
    (male(Y);female(Y)),
    sibs(X,Y).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)