Подсписок списка - 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].

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

textual
Листинг программы
?- subsum([1,2,3,5,6],6,Sub).
Sub = [1, 2, 3] ;
Sub = [1, 5] ;
Sub = [6] ;
false.
 
?-

Объяснение кода листинга программы

В этом коде определяется процедура подсуммирования (subsum) для двух списков. Первый список - это список чисел, а второй список - это число. Процедура подсуммирования должна возвращать список, содержащий только те элементы первого списка, которые меньше или равны второму числу. В первой строке кода вызывается процедура subsum с тремя аргументами: первый - это список [1,2,3,5,6], второй - число 6, третий - переменная Sub. Далее идут три возможных варианта результата:

  1. Sub = [1, 2, 3] - это значит, что число 6 больше всех элементов списка [1,2,3,5,6], поэтому в качестве результата возвращается сам список без изменений.
  2. Sub = [1, 5] - это значит, что число 6 больше всех элементов списка [1,2,3,5,6], кроме элемента 5, поэтому в качестве результата возвращается список, содержащий только элемент 5.
  3. Sub = [6] - это значит, что число 6 меньше или равно всем элементам списка [1,2,3,5,6], поэтому в качестве результата возвращается пустой список. Если ни одно из этих условий не выполняется, то возвращается значение false. Этот код можно использовать, например, для подсчета суммы элементов списка, которые меньше или равны некоторому числу.

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


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

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

7   голосов , оценка 3.714 из 5
Похожие ответы