Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Листинг Б.1. Определения часто используемых предикатов




% Файл frequent.pl: библиотека чаете используемых предикатов % Отрицание как недостижение цели

% Обычно эта операций реализуется в виде встроенного предиката, а для 4 ее обозначения часто применяется префиксный оператор ' \ + ', например \ в форме \+likes(тагу,snakes)

% Приведенное ниже определение предназначено исключительно для обеспечения * совместимости различных реализаций Prolog:- Op(900, fy, not). not Goal:-Goal,!, fail

true.

Ъ once[ Goal}: предикат, который формирует только одно решение для цели Goal

% (в качестве него берется первое же полученное решение)

% Этот предикат может быть уже предоставлен в конкретной реализации

% как встроенный

once(Goal):-

Goal,!. i member(X, List): предикат, который определяет принадлежность элемента X 1 к списку List

member (К, [ X I _]) • ,л X - Белова списка.

member(X, [ _ I Rest]):-

member(X, Rest). % X находится в теле списка

% cone (Ыл L2, L3): список L3 — конкатенация списков L1 и L2

сопс([],L,L).


 

cone! [X I LI}, L2, [X I L3]):-concl LI, L2, L3).

% del (X, LD, L): список L соответствует списку LO с удаленным элементом X % Примечание. Происходит удаление только одного экземпляра элемента X % Вызов предиката на выполнение завершается неудачей, если элемент X Ъ отсутствует в списке L0

del(X, [X I Rest], Rest). % Удалить элемент X, если он составляет

% голову списка

del! х, [Y [ RestO], [Y \ Rest]):-

dell X, RestO, Rest). % Удалить элемент Х из хвоста списка

% subset{ Set, Subset): предикат, который позволяет проверить, действительно ли

% список Set содержит Есе элементы списка Subset (проверить принадлежность

i подмножества к множеству)

% Примечание. Элементы списка Subset находятся в списке Set в том же порядке,

% что и в списке Subset

subset! [],[)>•

subset([First I Rest], [First | Sub]):- % Оставить элемент First

% з подмножестве subset(Rest, Sub),

subset([First | Rest], Sub):- i Удалить элемент First subset! Best, Sub).

i set_difference[ Setl, Set2, Set3); список Set3 определяется как разность

I множеств, представленных в виде списков Setl и Set2

% Обычно этот предикат используется Б такой форме: списки Setl и Set2 задаются

% как входные параметры, a Set3 - как выходной

set_dif ference ([]._,[]).

set_difference! [X | SI], S2, S3):-

member! X, S2),!, % Элемент Х принадлежит к множеству 32

set_difference! SI, S2, S3).

set_difference([X | SI], S2, [X | S3]):- % Элемент Х не принадлежит

Ъ к множеству S2 set_differenceI SI, S2, S3).

t length! List, Length): предикат, позволяющий определить длину Length

% списка List

% Примечание. Предикат length/2 может быть уже включен в состав встроенных

% предикатов конкретной версии Prolog

i В приведенном ниже определении используется хвостовая рекурсия

I Этот предикат может использоваться для эффективной выработки списков

i заданной длины

length; L, Ы):-length(L, О, К).

length! [], N, N).

length! [_ | L], N0, И):-N1 is HG + 1, length [ L, N1, N).

% max[ X, Y, Как): элемент Мах - наибольший среди X и Y

шах(Х, Y, Мах):-X>=Y,!, Мая = X


Приложение Б. Некоторые часто используемые предикаты



Max = Y.

% min(X, Y, Min): элемент Min - наименышй среди Х и Y

rcinix, Y, Min):-X =< 4,!, Min - X

Min = Y.

% copy_term(Tl, T2); терм T2 равен Tl, эа исключением того, что переменным

% присвоены другие имена

% Этот предикат может Сыть уже предоставлен в конкретной реализации как

% встроенный

% В соответствии с приведенным ниже определением процедуры вызов

* предиката copy_term происходит таким оПраэом, что Т2 согласуется с Т1

copy_term(Term, Copy):-

asserta(term_to_copy < Term!), retract(tetm_to_copy(Copy!),!.


594


Приложение Б. Некоторые часто используемые предикаты






Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 450 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Даже страх смягчается привычкой. © Неизвестно
==> читать все изречения...

2484 - | 2178 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.