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

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

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

Просмотр 2 сообщений - с 1 по 2 (из 2 всего)
  • Автор
    Сообщения
  • #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).

Просмотр 2 сообщений - с 1 по 2 (из 2 всего)

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