Ответ в теме: Разделение списка на четные и нечетные индексы

      Комментарии к записи Ответ в теме: Разделение списка на четные и нечетные индексы отключены
#2075

Нужно рассмотреть три возможных случая:

  1. на вход подан пустой список (такая ситуация обязательно возникнет если исходный список был четной длины) — результатом является два пустых списка;
  2. на вход подан список из одного элемента. Значение помещается в список элементов с нечетными индексами, список четных возвращается пустым;
  3. в исходном списке более одного элемента. Первый элемент помещается в список нечетных, второй — четных, а остальные — обрабатываются рекурсивно

split([], [], []):-!.
split([Elem], [Elem], []):-!.
split([Odd, Even|Tail], [Odd|OddTail], [Even|EvenTail]):-
  split(Tail, OddTail, EvenTail).