Использование списков в Пролог.
Список можно описать с помощью функтора (а,(b,c)).
Эквивалентная запись [a,b,c]
Процедуры работы со списками чаще всего определяют рекурсивно, то есть определяют базовые случаи, когда результат выдается сразу, общие случаи будут определять, как свести задачу к более простой.
Пример: Определим рекурсивно процедуру сцепить два списка:
1, 2 – исходные списки; 3 – результирующий список.
Базовый случай – если первый список пуст, то 2й и 3й список одинаковы.
Общий случай – если первый список не пуст, то его голова совпадает с головой 3го списка, а хвост 3го списка будет результатом сцепления хвоста первого списка со вторым списком.
append1([],L,L).
append1([H|T1], L, [H|T]):-
append1(T1, L, T).
?- append1([a,b], [c,d], X).
X = [a,b,c,d]
Пример: принадлежность элемента списку:
1 – объект; 2 – список объектов.
Предикат – истина, если в списке встречается искомый объект.
Базовый случай: если элемент совпадает с головой списка, то предикат – истина.
В общем случае нужно проверить принадлежность элемента хвосту.
elem(X, [X|_]).
elem(X, [_|Xs]):- elem(X, Xs).
?- elem(b, [a,b,c]).
Yes
?- elem(d, [a,b,c]).
No
Пример: удаление элемента из списка:
1 - объект, 2 – исходный список; 3 – результирующий список.
Базовый случай: если элемент совпадает с головой списка, то результат – хвост списка.
Общий случай: результатом будет список, имеющий голову исходного списка и хвост – хвост исходного списка, из которого удален заданный элемент.
delete1(X, [X|Xs], Xs).
delete1(X, [X1|Xs], [X1|L]):-
delete1(X, Xs, L).
?- delete1(b, [a,b,c], X).
X = [a,c]
?- delete1(d, [a,b,c], X).
no
Yandex.RTB R-A-252273-3
- Министерство образования и науки Российской Федерации
- Лабораторная работа № 1
- Данные и знания
- Синтаксис языка Пролог
- Семантика языка Пролог
- Алгоритм работы Пролог-машины.
- Пример построения базы правил на Пролог
- Задание на лабораторную работу
- Лабораторная работа № 2
- Использование списков в Пролог.
- Использование накапливающего параметра
- Управление перебором
- Задание на лабораторную работу
- Лабораторная работа № 3
- Представление задачи в терминах пространства состояний
- Слепые методы поиска
- Методы эвристического поиска
- Поиск оптимального пути
- 3.4 Задание на лабораторную работу
- Лабораторная работа № 4
- Основные понятия теории игр
- Представление игры в матричной форме
- Представление игры в виде игрового дерева
- Задание на лабораторную работу