Удаление отрицательных элементов из списка

Прикладное программирование Помощь с решением задач на Prolog Задачи на списки Удаление отрицательных элементов из списка

Помечено: ,

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #7085
      @user22

      Необходимо реализовать удаление отрицательных элементов с четными индексами из целочисленного списка на языке prolog (диалект SWI-Prolog).

    • #7091
      @admin

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

      rem([], []):-!.
      rem([Head], [Head]):-!.
      rem([A, B|Tail], Result):-
          rem(Tail, TailResult),
          (
          	B < 0, !, Result = [A|TailResult];
          	Result = [A,B|TailResult]
          ).
      

      Теперь в зависимости от того, является второй элемент положительным или нет — надо к результату рекурсивной обработки дописать либо [A] (только первый элемент), либо [A, B].

Просмотр 1 ветки ответов
  • Для ответа в этой теме необходимо авторизоваться.
×