首页 > 解决方案 > SWI PROLOG 中的家谱

问题描述

奶奶,表弟,兄弟,叔叔的规则有一些错误我尝试了很多规则,但仍然找不到正确的规则,它返回false,请帮助ppppppppp

/*rules*/
male(james).
male(charles).
male(william).
female(megan).
male(george).
female(catherine).
female(diana).
female(elizabith).
parent(james, charles).
parent(james, elizabeth).
parent(charles, catherine).
parent(charles, william).
parent(charles, megan).
parent(elizabeth, diana).
parent(diana, george).

/*rules*/
father(X, Y) :-  parent(X,Y), male(X).
mother(X, Y) :- parent(X,Y), female(X).
child(Y, X) :- parent(X, Y).
grandparent(X, Y) :- parent(X, Z), parent(Z, Y).
grandpa(X, Y) :- grandparent(X, Y), male(X).
grandma(X, Y) :- grandparent(X, Y), female(X).
brother(X, Y) :- male(X), parent(X, Z), parent(Y, Z), X \= Y.

uncle(X, Y) :- brother(X, Z), parent(Y, Z).
grandchild(X, Y) :- grandparent(Y, X).
        grandson(X, Y) :- grandchild(X, Y), male(X).
        granddaughter(X, Y) :- grandchild(X, Y), female(X).
siblings(B,G) :- parent(P,B), parent(P,G), B\=G.
cousins(X,Y) :- parent(A,X), parent(B,Y), siblings(A,B), X\=Y.

标签: prolog

解决方案


发现:女性(伊丽莎白)。伊丽莎白拼写错误!

通过此更正,您的代码应该可以正常工作。我是否回复了您的求助请求?


推荐阅读