我正在参加一个编程课,大多数人都是c ++,我们在Prolog上花了几个班,教练告诉我们自己研究这是我一直在做的事情。我一直在玩一个家庭树计划,我在使用same_generation的规则时遇到了麻烦。同一代人基本上是兄弟姐妹或堂兄。按照我现在的方式,
如果我查询:
same_generation(jill,X).
我明白了:
false.
如果我查询:
same_generation(jack, X).
我明白了:
X=jack
X=phil
这是正确的但是,jill也是同一代人。
我对此规则出错的任何帮助都将不胜感激!下面是“家谱”和我的代码。
我只是要离开规则并拿出大部分事实来浓缩帖子......
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).
答案 0 :(得分:0)
您可以定义与共享同一祖父母的人相同的一代。