一旦在序言中被删除,如何查找某人是否是某人的表亲?
How to find if somebody is somebodies second cousin once removed in prolog?
我正在编写一个程序 return 如果一个人是另一个人的远房表亲,则为真。唯一已知的信息是谁是 parent 还有谁。我正在使用这里 http://en.wikipedia.org/wiki/Cousin#Second_cousins_once_removed 的家谱。总的来说,我让一切正常,但我无法让它在被移除后找到第二个堂兄。表亲和曾经被带走的表弟工作,只是想得到一些帮助,如何找到同样被带走的第二个表亲。
parent(adam, betty).
parent(agatha, betty).
parent(adam, charles).
parent(agatha, charles).
parent(bill, david).
parent(betty, david).
parent(charles, emma).
parent(corinda, emma).
parent(dawn, frank).
parent(david, frank).
parent(emma, gwen).
parent(eric, gwen).
parent(frank, harry).
parent(felicity, harry).
child(X, Y) :-
parent(Y, X).
grandparent(X, Y) :-
parent(X, Z),
parent(Z, Y).
greatgrandparent(X, Y) :-
parent(P, Y),
grandparent(X, P).
cousin(X, Y) :-
grandparent(Z, X),
grandparent(Z, Y),
\+sibling(X, Y),
X \= Y.
sibling(X, Y) :-
parent(Z, X),
parent(Z, Y),
X \= Y.
cousinonceremoved(X, Y) :-
cousin(Z, Y),
child(X, Z).
secondcousin(X, Y) :-
greatgrandparent(Z, X),
greatgrandparent(Z, Y),
\+sibling(X, Y),
\+cousin(X, Y),
X \= Y.
正如文章所述:"The child of one's second cousin".
secondCousinOnceRemoved(H, G) :- child(H, F), secondcousin(F, G).
我正在编写一个程序 return 如果一个人是另一个人的远房表亲,则为真。唯一已知的信息是谁是 parent 还有谁。我正在使用这里 http://en.wikipedia.org/wiki/Cousin#Second_cousins_once_removed 的家谱。总的来说,我让一切正常,但我无法让它在被移除后找到第二个堂兄。表亲和曾经被带走的表弟工作,只是想得到一些帮助,如何找到同样被带走的第二个表亲。
parent(adam, betty).
parent(agatha, betty).
parent(adam, charles).
parent(agatha, charles).
parent(bill, david).
parent(betty, david).
parent(charles, emma).
parent(corinda, emma).
parent(dawn, frank).
parent(david, frank).
parent(emma, gwen).
parent(eric, gwen).
parent(frank, harry).
parent(felicity, harry).
child(X, Y) :-
parent(Y, X).
grandparent(X, Y) :-
parent(X, Z),
parent(Z, Y).
greatgrandparent(X, Y) :-
parent(P, Y),
grandparent(X, P).
cousin(X, Y) :-
grandparent(Z, X),
grandparent(Z, Y),
\+sibling(X, Y),
X \= Y.
sibling(X, Y) :-
parent(Z, X),
parent(Z, Y),
X \= Y.
cousinonceremoved(X, Y) :-
cousin(Z, Y),
child(X, Z).
secondcousin(X, Y) :-
greatgrandparent(Z, X),
greatgrandparent(Z, Y),
\+sibling(X, Y),
\+cousin(X, Y),
X \= Y.
正如文章所述:"The child of one's second cousin".
secondCousinOnceRemoved(H, G) :- child(H, F), secondcousin(F, G).