2
我有一個事實設爲所以......Prolog的確定性 - 分組事實
fav_fruit(male, young, apple).
fav_fruit(female, young, bannana).
fav_fruit(male, old, bannana).
fav_fruit(female, old, apple).
fav_fruit(female, young, apple).
我需要找出是否有任何一組(性別,年齡),那裏有更多的一個最喜歡的水果(上述事實的答案將是(女性,年輕)
我一直在想解決的是如何使用prolog中的aggregate
或findall
函數來返回某種類型的列表,如....
female, young = 2 (apple, bannana)
male, young = 1 (apple)
male, old = 1 (bannana)
female, old = 1 (apple)
...這樣我可以檢查每個成員的總數,並測試它是否大於1.
任何想法將不勝感激。
findall/3 + sort/2 - > setof/3 –
@Paulo Moura:不完全,setof失敗,空結果集,而findall + sort不。 – gusbro
那麼?如果上面的findall/3調用成功使用一個空列表,sort/2當然也會給出一個空列表,然後對member/2的調用將失敗,因爲在空列表中沒有元素。因此,您可以用setof/3的調用替換上面的findall/3 + sort/2調用。 –