Определите подмножество предикатов (L, Sum, Subl), которое принимает список L чисел, число Sum и объединяет SubL с подпоследовательностью L, так что сумма чисел в SubL равна Sum.
Например
?- subsetsum([1,2,5,3,2], 5, SubSet);
SubSet = [1,2,2];
SubSet = [2,3];
SubSet = [5];
SubSet = [3,2];
No.
у нас есть
sum([H1 | [H2 | Tail]], S):-
sum([[H1+H2]|Tail], S):-
sum([X], X).
и
subset([],[]).
subset([H1|T1], [H1|T2]) :- // heads are the same
subset(T1, T2).
subset([_|Rest], X):
subset(Rest, X).