Как избавиться от дубликатов в прологе? - PullRequest
0 голосов
/ 14 сентября 2018

Я новичок в прологе, и у меня есть иерархическая база данных, в которой перечислены сотрудники и их руководители:

employee(employee1, employee4).
employee(employee2, employee4).
employee(employee3, employee4).
employee(employee4, employee8).
employee(employee5, employee7).
employee(employee6, employee7).
employee(employee7, employee8).
employee(employee8, employee9).
employee(employee9, employee10).

Я хочу создать предикат под названием coworker (A, B), в котором перечислены все сотрудники определенного типа.сотрудник, включая его / ее начальство.

coworker(Who, employee1).
Who = employee2 ?;
Who = employee3 ?;
Who = employee4 ?;
Who = employee5 ?;
Who = employee6 ?;
Who = employee7 ?;
Who = employee8 ?;
Who = employee9 ?;
Who = employee10 ?;

Мой код на данный момент таков:

supervisor(A,B):-employee(B,A).

boss(A,B):-supervisor(A,B).
boss(A,B):-supervisor(A,C),boss(C,B).

coworker(A,B):-boss(C,A),boss(C,B).
coworker(A,B):-employee(A,B).
coworker(A,B):-supervisor(A,B).
coworker(A,B):-boss(X,Y).

Однако мне трудно полностью избавиться от всех возможных дубликатовколлега по работе.Что я должен сделать, чтобы это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...