Ответ в теме: Составить из положительных элементов списка все списки заданной длины

      Комментарии к записи Ответ в теме: Составить из положительных элементов списка все списки заданной длины отключены

Главная Форумы Программирование Помощь с решением задач на Prolog Задачи на списки Составить из положительных элементов списка все списки заданной длины Ответ в теме: Составить из положительных элементов списка все списки заданной длины

#1896

Ваш filter я подправил слегка:

filter([], []):-!.
filter([Positive|Tail], [Positive|TailFiltered]):-
  Positive > 0, !, filter(Tail, TailFiltered).
filter([_Negative|Tail], TailFiltered):-
  filter(Tail, TailFiltered).

Если исходный список пуст — результатом является пустой список.
В остальных случаях вычисляется результат рекурсивной обработки хвоста списка, к которому может быть добавлен первый элемент списка (если он больше ноля).

Остается лишь вызвать функцию permutation.