Объединить списки. Четные/нечетные индексы

      Комментарии к записи Объединить списки. Четные/нечетные индексы отключены

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

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

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

    Решим на Visual Prolog задачу:

    Объединить два списка одинаковой длины в третий так, чтобы элементы на нечётных позициях были из первого списка, а на чётных — из второго.

    domains 
    	list = integer*
    predicates
      	append_odd_even(list, list, list)
    clauses
    	append_odd_even([], [], []):-!.
    	append_odd_even([A], [_B], [A]):-!.
      	append_odd_even([A, _B|Tail1], [_C, D|Tail2], [A, D|Tail]):-
      		append_odd_even(Tail1, Tail2, Tail). 
    goal
      	append_odd_even([1,2,3,4,5], [6,7,8,9,0], X).

    append_odd_even

    Если оба списка пустые — результатом будет пустой список. Если исходные списки содержат по одному элементу, то результатом будет список из элемента первого списка (он находится на нечетной позиции). Если же в списках по два и более элементов, то выбираем из каждого из них пару элементов, а остальные — обрабатываем рекурсивно. К полученному результату дописываем первый элемент первого списка и второй — второго.

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