sisters(mary,catherine).
sisters(catherine,mary).
brothers(john,simone).
brothers(simone,john).
marriage(john,mary,2010).
marriage(mary,john,2010).
marriage(kate,simone,2009).
marriage(simone,kate,2009).
marriage(catherine,josh,2011).
marriage(josh,catherine,2011).
birth(mary,johnny).
birth(mary,peter).
birth(catherine,william).
birth(kate,betty).
givebirthyear(mary,peter,2015).
givebirthyear(mary,johnny,2012).
givebirthyear(catherine,william,2012).
givebirthyear(kate,betty,2011).
siblings(X,Y) :-
birth(Parent,X),
birth(Parent,Y).
cousins(X,Y) :-
birth(Xparent,X),
birth(Yparent,Y),
sisters(Xparent,Yparent).
cousins(X,Y) :-
X \= Y,
birth(Xmom,X),
birth(Ymom,Y),
marriage(Xmom,Xdad,_),
marriage(Ymom,Ydad,_),
brothers(Xdad,Ydad).
我不知道我的代碼中發生了什麼。當我輸入在Prolog中無法顯示第二個答案
cousins(betty,johnny).
和
cousins(william,johnny).
的序言說真的。但是,當我進入
cousins(S,johnny).
序言中說:S = william
,但沒有告訴我,S = betty
。我不知道發生了什麼。需要幫忙。
這是我得到的序言結果。
?- cousins(S,johnny).
S = william ;
false.
?- cousins(betty,johnny).
true.
?- cousins(william,johnny).
true .
這是這裏的問題。當我按「;」我得到一個答案「假」。我嘗試另一個簡單的陳述來測試我是否可以使用「;」得到另一個答案,我成功了。但在這種情況下,我不能... –
嘗試用'dif(X,Y)'代替'X \ = Y'。 'dif(X,Y)'是說'X'和'Y'是不同的關係方式。 – lurker