Разделение списка на четные и нечетные индексы

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

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

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

    questioner
    Участник

    Помогите написать на Prolog функцию разделения списка на 2 части – в одну должны войти только элементы с четными индексами, во вторую – с нечетными.
    Например:

    split([a,b,c,d,e,f], OddList, EvenList).
    OddList = [a,c,e]
    EvenList = [b,d,f]

  • #2075

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

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

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

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