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

        сестра( X, Z).

1. 6

Да.    (Определение верно)

1. 7

(a)    возвратов не будет


(b)    возвратов не будет


(c)    возвратов не будет


(d)    возвраты будут

Глава 2

2. 1

(a)    переменная


(b)    атом


(c)    атом


(d)    переменная


(e)    атом


(f)    структура


(g)    число


(h)    синтаксически неправильное выражение


(i)    структура


(j)    структура

2. 3

(a)    успех


(b)    неуспех


(c)    неуспех


(d)    D = 2,    Е = 2


(e)    Р1 = точка(-1, 0)


        Р2 = точка( 1, 0)


        Р3 = точка( 0, Y)


Такая конкретизация определяет семейство треугольников, у которых две вершины располагаются на оси х в точках 1 и -1, а третья - в произвольной точке оси у.

2. 4

отр( точка( 5, Y1),    точка( 5, Y2) )

2. 5

регулярный( прямоугольник( точка( X1, Y1),


                                    точка( Х2, Y1), точкa( X2, Y3),


                                    точка( X1, Y3) ) ).

Здесь предполагается, что первая точка соответствует нижней левой вершине прямоугольника.

2. 6

(a)    А = два


(b)    no


(c)    С = один


(d)    D = s(s(1));


        D = s(s(s(s(s(1)))))

2. 7

родственники( X, Y) :-


    предок( X, Y);


    предок( Y, X);


    предок( Z, X),


    предок( Z, Y);


    предок( X, Z),


    предок( Y, Z).

2. 8

преобразовать( 1, один).


преобразовать( 2, два).


преобразовать( 3, три).

2. 9

В случае, изображенном на рис. 2.10, пролог-система выполняет несколько больший объем работы.

2. 10

В соответствии с определением сопоставления, приведенном в разд. 2.2, данное сопоставление будет успешным. X приобретает вид циклической структуры, в которой сам X присутствует в качестве одного из аргументов.

Глава 3

3. 1

(a)    конк( L1, [ _, _, _ ], L)

(b)    конк( [ _, _, _ ], L1, L),


                        % Удалить 3 первые элемента L


        конк( L2, [ _, _, _ ], L1)


                        % Удалить 3 последние элемента L1

Вот более короткий вариант, предложенный I. Tvrdy:

        конк( [ _, _, _ | L2], [ _, _, _ ], L)

3. 2

(а)    последний( Элемент, Список) :-


        конк( _, [Элемент], Список).



(b)    последний( Элемент, [Элемент]).

        последиий( Элемент, [Первый | Остальные]):-


        последний( Элемент, Остальные).

3. 3

четнаядлина( [ ] ).

четнаядлина( [Первый | Остальные] ) :-


    нечетнаядлина( Остальные).

нечетнаядлина( [ _ ] ).

нечетнаядлина( [Первый | Остальные] ) :-


    четнаядлина( Остальные).

3. 4

обращение( [ ], [ ]).

обращение( [Первый | Остальные], ОбращСпис): -


    обращение( Остальные, ОбращСписОстальных),


конк( О6ращСписОстальных, [Первый], ОбращСпис).

3. 5

% Такой предикат легко определить при помощи отношения обратить

палиндром( Список) :-


    обратить( Список, Список).

% Вот другое решение, не использующее обратить

палиндром1( [ ] ).

палиндром1( [ _ ] ).

палиндром1 [Первый | Остальные] ) :-


    конк( Середина, [Первый], Остальные),


    палиндром1( Середина).

3. 6

сдвиг( [Первый | Остальные], Сдвинут) :-


    конк( Остальные, [Первый], Сдвинут).

3. 7

перевод( [ ], [ ]).

перевод( [Голова | Хвост], [Голова1 | Хвост1]) :-


    означает( Голова, Голова1),


    перевод( Хвост, Хвост1).

3. 8

подмножество( [ ], [ ] ).

подмножество( [Первый | Остальные], [Первый | Подмн]):-


                                % Оставить первый элемент в подмножестве


    подмножество( Остальные, Подмн).

подмножество( [Первый | Остальные], Подмн) :-


                                % Убрать первый элемент из подмножества


    подмножество( Остальные, Подмн).

3. 9

разбиениесписка( [ ], [ ], [ ]).                           % Разбивать нечего

разбиениесписка( [X], [X], [ ]).


                            % Разбиение одноэлементного списка

разбиениесписка( [X, Y | Список], [Х | Список1],


                                [Y | Список2]) :-


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

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

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

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

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

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