3. 15

:- ор( 100, xfx, входит_в)

:- ор( 300, fx, конкатенация_списков)

:- ор( 200, xfx, дает)

:- ор( 100, xfx, и)

:- ор( 300, fx, удаление_элемента)

:- ор( 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 | Подмн]) :-

Вы читаете Prolog
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату