我想在我的序言程序中列出特定人的所有表親,但似乎無法得到它的工作。我檢查了我的代碼,它似乎是正確的,但我沒有得到我想要的輸出。序言系列樹,表親問題
father(john, johnny).
father(john, peter).
father(josh, william).
father(simone, betty).
mother(mary, johnny).
mother(mary, peter).
mother(catherine, william).
mother(kate, betty).
parent(A,B) :- father(A,B).
parent(A,B) :- mother(A,B).
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.
我想,當我查詢cousins(X, william).
返回2個堂兄弟,但我只獲得虛假的回報。我究竟做錯了什麼?
編輯:繼承人什麼我現在,卻只能拿到1個表妹顯示
father(grandpa1, mary).
father(grandpa1, catherine).
father(grandpa2, john).
father(grandpa2, simone).
father(john, johnny).
father(john, peter).
father(josh, william).
father(simone, betty).
mother(grandma1, mary).
mother(grandma1, catherine).
mother(grandma2, john).
mother(grandma2, simone).
mother(mary, johnny).
mother(mary, peter).
mother(catherine, william).
mother(kate, betty).
parent(A,B) :- father(A,B).
parent(A,B) :- mother(A,B).
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永遠不會返回任何東西,所以你永遠不會返回'false'。目標/謂詞要麼成功要麼失敗,就是這樣。 – Enigmativity