【发布时间】:2016-11-20 19:51:13
【问题描述】:
我可以在一棵树上检查人们的关系(叔叔、阿姨、父亲、祖父......),但现在我想知道两个人是在同一棵树上还是在不同的树上,即检查他们是否来自同一棵树'家庭'。
“家庭”的定义有点愚蠢,因为我们都有共同的祖先,但这是我必须做的练习......
我想检查一下 Maurice 和 Floriane 是否来自同一个家庭...
【问题讨论】:
-
检查它们是否有共同的祖先就足够了。
我可以在一棵树上检查人们的关系(叔叔、阿姨、父亲、祖父......),但现在我想知道两个人是在同一棵树上还是在不同的树上,即检查他们是否来自同一棵树'家庭'。
“家庭”的定义有点愚蠢,因为我们都有共同的祖先,但这是我必须做的练习......
我想检查一下 Maurice 和 Floriane 是否来自同一个家庭...
【问题讨论】:
您是否尝试过类似的方法:
inSameFamily(Person1, Person2) :-
ancestor(Person1, CommonAncestor),
ancestor(Person2, CommonAncestor).
【讨论】:
ancestor/2。或者您可能想要定义一个使用 ancestor/2 的谓词,并且在两个参数统一时也成功:same_family(X, X). same_family(X, Y) :- dif(X, Y), ( ancestor(X, Y) ; ancestor(Y, X).