Цель работы: Приобрести практические навыки организации списков на Prolog. Научиться реализовывать рекурсивную обработку списков.
Задание
1) Записать на языке Prolog программу для отношений, выполняющих рекурсивную обработку списков. Предусмотреть возможность обработки списков различных типов. Для запросов использовать внешние цели.
2) Привести варианты запросов для данных всех типов, допустимых в программе. Для одного из простых запросов построить дерево вывода.
3) Оценить сложность полученной логической Prolog-программы в зависимости от параметров исходных данных (длин обрабатываемых списков): найти размер цели в доказательстве запроса, использованного для построения дерева вывода, а также количество вершин дерева вывода.
Вариант 15
Отношение ЧЕТHA_ПЕРЕСТАНОВКА для выяснения четности перестановки Y
исходного списка X. Например,
?- ЧЕТHA_ПЕРЕСТАНОВКА([3,4,5], [4,5,3]) → истинно, a
?- ЧЕТHA_ПЕРЕСТАНОВКА([3,4,5], [4, 3,5]) → нет.
Пример формирования перестановки:
Х= 3,4,5 → 4,3,5 - первая перестановка,
4,5,3 - вторая перестановка