Программирование на языке Пролог для искусственного интеллекта
Шрифт:
:- op( 300, fx, удаление_элемента)
:- op( 100, xfx, из_списка) % Принадлежность к списку
Элемент входит_в [Элемент | Список].
Элемент входит_в [Первый | СписокОстальных] :-
Элемент входит_в СписокОстальных.
% Конкатенация списков
конкатенация_списков [] и Список дает Список.
конкатенация_списков [X | L1]
и L2 дает [X | L3] :-
конкатенация_списков L1 и L2 дает L3.
% Удаление элемента из списка
удаление_элемента Элемент из_списка
[Элемент | ОстальныеЭлементы]
дает ОстальныеЭлементы.
удаление_элемента Элемент из_списка
[Первый | ОстальныеЭлементы]
дает [Первый | НовСписОстЭлементов] :-
удаление_элемента Элемент из_списка
ОстальныеЭлементы дает НовСписОстЭлементов.
3.16
max( X, Y, X) :-
X >= Y.
max( X, Y, Y) :-
X <Y.
3.17
максспис( [X], X).
% Максимум в одноэлементном списке
максспис( [X, Y | Остальные], Мах) :-
% В списке есть по крайней мере два элемента?
максспис( [Y | Остальные], МаксОстальные),
mах( X, МаксОстальные, Мах).
% Мах наибольшее из чисел X и МаксОстальные
3.18
сумспис( [], 0).
сумспис( [Первый | Остальные], Сумма) :-
сумспис( Остальные, СуммаОстальных),
Сумма is Первый + СуммаОстальных.
3.19
упорядоченный ([]).
% Одноэлементный список является упорядоченным
упорядоченный( [X, Y | Остальные] :-
X =< Y,
упорядоченный( [Y | Остальные] ).
3.20
подсумма( [], 0, []).
подсумма( [N | Список], Сумма, [N | Подмн]) :-
% N принадлежит подмножеству
Сумма1 is Сумма - N,
подсумма( Список, Сумма1, Подмн).
подсумма( [N | Список], Сумма, Подмн) :-
% N не принадлежит подмножеству
подсумма( Список, Сумма, Подмн).
3.21
между( N1, N2, N1) :-
N1 =< N2.
между( N1, N2, X) :-
N1 < N2,
HoвoeN1 is N1 + 1,
между( HoвoeN1, N2, X).
3.22
:- op( 900, fx,
если).
:- op( 800, xfx, то).
:- op( 700, xfx, иначе).
:- op( 600, xfx, :=).
если Вел1 > Вел2 то Перем := Вел3
иначе ЧтоУгодно :-
Вел1 > Вел2,
Перем = Вел3.
если Вел1 > Вел2 то ЧтоУгодно
иначе Перем := Вел4 :-
Вел1 =< Вел2,
Перем = Вел4.
Глава 4
4.1
(a)
?- семья(членсемьи( _, Фамилия, _, _ ), _, []).
(b)
?- ребенок( членсемьи( Имя, Фамилия, _,
работает( _, _ ) )).
(c)
семья(членсемьи( _, Фамилия, _, неработает),
членсемьи( _, _, _, работает( _, _ ) ),_ ).
(d)
?- семья( Муж, Жена, Дети),
датарождения( Муж, дата( _, _, Год1) ),
датарождения( Жена, дата( _, _, Год2) ),
( Год1 - Год2 >= 15;
Год2 - Год1 >= 15 ),
принадлежит( Ребенок, Дети).
4.2
близнецы( Ребенок1, Ребенок2) :-
семья( _, _, Дети),
удалить( Ребенок1, Дети, ДругиеДети),
% Выделить первого ребенка
принадлежит( Ребенок2, ДругиеДети),
принадлежит( Ребенок1, Дата),
принадлежит( Ребенок2, Дата).
4.3
n_элемент( 1, [X | L], X).
% X - первый элемент списка [X | L]
n_элемент( N, [Y | L], X) :-
% X - n-й элемент [Y | L]
N1 is N - 1,
n_элемент( N1, L, X).
4.4
Входная цепочка укорачивается на каждом неспонтанном цикле, а укорачиваться бесконечно она не может.
4.5
допускается( S, [], _ ) :-
конечное( S).
допускается( S, [X | Остальные], Макс_переходов) :-
Поделиться:
Популярные книги
Калибр Личности 1
1. Калибр Личности
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Третий. Том 3
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Действуй, дядя Доктор!
Любовные романы:
короткие любовные романы
6.83
рейтинг книги
Дарующая счастье
Любовные романы:
любовно-фантастические романы
6.96
рейтинг книги
Охота на эмиссара
1. Федерация Объединённых Миров
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Боги, пиво и дурак. Том 3
3. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Кровь и Пламя
7. Изгой
Фантастика:
фэнтези
8.95
рейтинг книги
Идущий в тени 4
4. Идущий в тени
Фантастика:
боевая фантастика
6.58
рейтинг книги
Сумеречный стрелок 7
7. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Титан империи 5
5. Титан Империи
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Подаренная чёрному дракону
Любовные романы:
любовно-фантастические романы
7.07
рейтинг книги
Бальмануг. (Не) Любовница 2
4. Мир Десяти
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Восход. Солнцев. Книга IV
4. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Измена. Мой непрощённый
2. Самойловы
Любовные романы:
современные любовные романы
5.00