我正試圖解決SWI-Prolog中的一個問題。我有一個合適的元素(常量)列表獲得。Prolog找到所有匹配條件的子集
suitables(L) :- setof(X, isSuitable(X), L).
從上面的每一個元素都有通過仿函數的得分,我需要所有具有得分> 10的子集,我知道如何獲得的分數總和:
scoreSum([], 0).
scoreSum([H,T], Tot) :- getScore(H,F),scoreSum(T, Rest), Tot is F+Rest.
然後,條件可以這樣表示:
cond(L) :- scoreSum(L, R), R > 10.
如何獲得所有符合給定條件的子集?我可以根據回答here獲得子集,但是如何迭代該結果以僅獲取與條件匹配的子集?
調用這個關係'powerset/2'有點用詞不當。 Powerset將是:'powerset(M,P): - bagof(S,seq_subseq(M,S),P)。' – false 2014-11-08 21:05:54
是的,你是對的。我會改變代碼。謝謝你的幫助。 – nowxue 2014-11-08 21:10:21