Поменять местами элементы с четными и нечетными индексами

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

Помечено: ,

В этой теме 1 ответ, 2 участника, последнее обновление  Васильев Владимир Сергеевич 2 года/лет, 10 мес. назад.

  • Автор
    Сообщения
  • #1947

    questioner
    Участник

    Нужно решить задачу на обработку списков:

    Поменяйте местами элементы с нечетными индексами с элементами с четными индексами

  • #1948

    Задачу надо разбить на несколько частей:

    • если список пуст – результатом является пустой список;
    • если список содержит один элемент – результатом является точно такой же список, т.к. есть элемент с нечетным индексом, но его не с чем обменивать местами;
    • если в списке два и более элементов – можно отделить 2 первых элемента списка, остальные обработать рекурсивно. В результате рекурсивного вычисления будет получен некоторый результат (SwapOddTail), к которому надо дописать два первых элемента с измененным порядком следования

    swap_odd([], []):-!.
    swap_odd([Element], [Element]):-!.
    swap_odd([FirstElement, SecondElement|Tail], [SecondElement, FirstElement|SwapOddTail]):-
      swap_odd(Tail, SwapOddTail).

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