Чтение онлайн

ЖАНРЫ

Неизвестно

Шрифт:

ОстальныеЭлементы дает НовСписОстЭлементов.

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вoeNl is N1 + 1,

между( HoвoeNl, N2, X).

3. 22

:- ор( 900, fx, если).

:- ор( 800, xfx, то).

:- ор( 700, xfx, иначе).

:- ор( 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 | Остальные], Макс_переходов) :-

Макс_переходов > 0,

переход( S, X, S1),

НовыйМакс is Макс_переходов - 1,

допускается( S1, Остальные, НовыйМакс).

допускается( S, Цепочка, Макс_переходов) :-

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