Подсписки чисел с заданной суммой - 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].
Написал такое решение
Листинг программы
  1. p4([H|T],N,[H|T1]):- H =< N,N1 is N-H,p4(T,N1,T1).
  2. p4([_|T],N,T1):- p4(T,N,T1).
  3. p4([],0,[]).
Листинг программы
  1. >>?- p4([1,2,5,3,2],5,X).
  2. X = [1, 2, 2] ;
  3. X = [2, 3] ;
  4. X = [5] ;
  5. X = [3, 2] ;
  6. false.
Как мне убрать последний результат Х=[3,2]?

Решение задачи: «Подсписки чисел с заданной суммой»

textual
Листинг программы
  1. p4([H|T], N, [H|T1]) :-
  2.     H =< N,
  3.     !,     % <---- Вот отсечение:  если добрались до этой точки, остальные правила пропустить
  4.     N1 is N-H,
  5.     p4(T,N1,T1).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы