Prolog家族树同一代规则

时间:2014-12-10 01:07:15

标签: prolog predicate rule

我正在参加一个编程课,大多数人都是c ++,我们在Prolog上花了几个班,教练告诉我们自己研究这是我一直在做的事情。我一直在玩一个家庭树计划,我在使用same_generation的规则时遇到了麻烦。同一代人基本上是兄弟姐妹或堂兄。按照我现在的方式,

如果我查询:

 same_generation(jill,X). 

我明白了:

false. 

如果我查询:

 same_generation(jack, X). 

我明白了:

X=jack
X=phil 

这是正确的但是,jill也是同一代人。

我对此规则出错的任何帮助都将不胜感激!下面是“家谱”和我的代码。

Family Tree

我只是要离开规则并拿出大部分事实来浓缩帖子......

mother(lisa,abe). ....

father(tony,abe). ....


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

sibling(X,Y) :- father(P,X), father(P,Y), mother(Q,X), mother(Q,Y).

cousin(X,Y) :-parent(A,X), parent(B,Y), sibling(A,B).

same_generation(X,Y) :- sibling(Someone,P), cousin(Someone,X), cousin(P,Y).

1 个答案:

答案 0 :(得分:0)

您可以定义与共享同一祖父母的人相同的一代。