Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


Ћистинг Ѕ.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; ћы поможем в написании ваших работ!; просмотров: 434 | Ќарушение авторских прав


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

Ћучшие изречени€:

—тремитесь не к успеху, а к ценност€м, которые он дает © јльберт Ёйнштейн
==> читать все изречени€...

1456 - | 1375 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.012 с.