Я пытаюсь решить проблему в SWI-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
Да, вы правы. Я изменю код. Спасибо за вашу помощь. – nowxue