我正在学习Prolog,我想要的是做一个简单的"计算"(我不知道它是如何在Prolog中调用的)simle家族的成员。
例如我有:
1)father of steve is petter
2)brother steve is john
3)A person is a son to a Father when the brother of the person has as father the Father
(当它出乎我的想法时,它似乎很有趣并完全脱离逻辑:))
father(steve,petter).
brother(john,steve).
father(X,Y):-brother(X,Z),father(Z,Y)).
我的问题是谁是约翰的父亲(正确的芒果会更好)
?-father(john,X).
但它总是让我虚假。
答案 0 :(得分:0)
当您输入father(john, X).
时,首先会尝试找到Z
,brother(john, Z)
为真。没有这样的Z
,所以它返回false。
请注意brother(steve, john)
并不暗示brother(john, steve)
,除非您告诉Prolog应该这样做。
答案 1 :(得分:0)
<强>解决:强>
father(steve,petter).
brother(john,steve).
whoisfather(X,Y):-brother(X,Z),father(Z,Y).
?- whoisfather(john,X).
X = petter.
而不是
father(steve,petter).
brother(john,steve).
father(X,Y):-brother(X,Z),father(Z,Y)).
?- father(john,X).
false.
见评论