我需要prolog中的代码。
假设我们在家谱中定义了一些人。
如果他们有相同的一代并且他们是同一个祖先,我如何编写一个能让两个人姓名和过程的函数?
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
答案 0 :(得分:0)
分解:从一个具有共同祖先的两个人的谓词开始,其中具有相同的父亲将是你的基本情况。然后加强它以跟踪每个人的共同祖先的跟踪或者多少代。还有一步(留作练习),你就完成了!