какой код в прологе может найти два человека, имеющих одно поколение? - PullRequest
0 голосов
/ 02 января 2012

Мне нужен код в прологе.

Предположим, мы определили некоторых людей в генеалогическом древе.

Как я могу написать функцию, которая получит имя и процесс двух человек, если они одного поколения и кто их предок?

parent(chester,irvin).
parent(chester,clarence).
parent(chester,mildred).
parent(irvin,ron).
parent(irvin,ken).
parent(clarence,shirley).
parent(clarence,sharon).
parent(clarence,charlie).
parent(mildred,mary).


male(chester).
female(mildred).
male(irvin).
female(shirley).
male(clarence).
female(sharon).
male(ron).
female(mary).
male(ken).
male(charlie).



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

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

grandparent(X,Y) :- parent(X,Z), parent(Z,Y).

paternalgrandfather(X,Y) :- father(X,Z), father(Z,Y).

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

brothers(X,Y) :- sibling(X,Y),male(X),male(Y), \+ (X=Y).

samegeneration(x,y) :- HERE I DONT KNOW WHAT TO DO

1 Ответ

0 голосов
/ 05 января 2012

Разбейте это: начните с предиката для двух людей, имеющих общего предка, где ваш базовый случай будет иметь одного и того же родителя. Затем улучшите это, чтобы отследить или сколько поколений у этого общего предка есть у каждого человека. Еще один шаг (который оставлен в качестве упражнения), и все готово!

...