Читаем Prolog полностью

    разбиениесписка( Список, Список1, Список2).

3. 10

можетзавладеть( состояние( _, _, _, имеет), [ ] ).


                                % Ничего не надо делать

можетзавладеть( Состояние, [Действие | Действия]):-


    ход( Состояние, Действие, НовоеСостояние),


                                % Первое действие


    можетзавладеть( НовоеСостояние, Действия).


                                % Оставшиеся действия

3. 11

линеаризация( [Голова | Хвост], ЛинейныйСписок ) :-


                                % Линеаризация непустого списка


    линеаризация( Голова, ЛинейнаяГолова ),


    линеаризация( Хвост, ЛинейныйХвост ),


    конк( ЛинейнаяГолова, ЛинейныйХвост,


        ЛинейныйСписок ).

линеаризация( [ ], [ ] ).                  % Линеаризация пустого списка

линеаризация( X, [X] ).


                            % Линеаризация объекта, не являющегося списком

% Замечание: при попытке получить от этой программы более


% одного варианта решения выдается бессмыслица

3. 12

Терм1 = играет_в( джимми, и( футбол, сквош) )


Терм2 = играет_в( сьюзан, и( теннис,


                                    и( баскетбол, волейбол) ) )

3. 13

:- ор( 300, xfx, работает)


:- ор( 200, xfx, в)


:- ор( 100, xfx, нашем)

3. 14

(a)    А = 1 + 0


(b)    В = 1 + 1 + 0


(c)    С = 1 + 1 + 1 + 1 + 0


(d)    D = 1 + 1 + 0 + 1

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

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, :=).


Перейти на страницу:

Похожие книги

Слово о полку Игореве
Слово о полку Игореве

Исследование выдающегося историка Древней Руси А. А. Зимина содержит оригинальную, отличную от общепризнанной, концепцию происхождения и времени создания «Слова о полку Игореве». В книге содержится ценный материал о соотношении текста «Слова» с русскими летописями, историческими повестями XV–XVI вв., неординарные решения ряда проблем «слововедения», а также обстоятельный обзор оценок «Слова» в русской и зарубежной науке XIX–XX вв.Не ознакомившись в полной мере с аргументацией А. А. Зимина, несомненно самого основательного из числа «скептиков», мы не можем продолжать изучение «Слова», в частности проблем его атрибуции и времени создания.Книга рассчитана не только на специалистов по древнерусской литературе, но и на всех, интересующихся спорными проблемами возникновения «Слова».

Александр Александрович Зимин

Древнерусская литература / Прочая старинная литература / Прочая научная литература / Древние книги / Литературоведение / Научная литература