Подсписки чисел с заданной суммой - Prolog
Формулировка задачи:
Определите предикат subsum(+Set, +Sum,?SubSet) такой, что Set является списком чисел, SubSet- подмножеством этих чисел, а сумма чисел в SubSet равна Sum.
например:
?- subsum([1,2,5,3,2],5,Sub).
Sub=[1,2,3];
Sub=[2,3];
Sub=[5].
Листинг программы
- p4([H|T],N,[H|T1]):- H =< N,N1 is N-H,p4(T,N1,T1).
- p4([_|T],N,T1):- p4(T,N,T1).
- p4([],0,[]).
Листинг программы
- >>?- p4([1,2,5,3,2],5,X).
- X = [1, 2, 2] ;
- X = [2, 3] ;
- X = [5] ;
- X = [3, 2] ;
- false.
Решение задачи: «Подсписки чисел с заданной суммой»
textual
Листинг программы
- p4([H|T], N, [H|T1]) :-
- H =< N,
- !, % <---- Вот отсечение: если добрались до этой точки, остальные правила пропустить
- N1 is N-H,
- p4(T,N1,T1).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д