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

      Комментарии к записи Ответ в теме: Поменять местами элементы с четными и нечетными индексами отключены
#1948

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

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

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