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

    унифицируемые( Остальные, Терм, Список).

унифицируемые( [Первый | Остальные], Терм,

                                [Первый | Список] ) :-

    унифицируемые( Остальные, Терм, Список).

Глава 6

6. 1

найтитерм( Терм) :-

                            % Пусть текущий входной поток - это файл f

    read( Терм),  !,

                            % Текущий терм из f сопоставим с Терм'ом?

    write( Терм);                  % Если да - вывести его на терминал

    найтитерм( Терм).       % В противном случае - обработать

6. 2

найтитермы( Терм) :-

    read( ТекущийТерм),

    обработать( ТекущийТерм, Терм).

обработать( end_of_file, _ ) :-  !.

обработать( ТекущийТерм, Терм) :-

    ( not( ТекущийТерм = Терм),  !;

                        % Термы несопоставимы

      write( ТекущийТерм), nl),

                        % В противном случае вывести текущий терм

    найтивсетермы( Терм).

                        % Обработать оставшуюся часть файла

6. 4

начинается( Атом, Символ) :-

    name( Символ, [ Код]),

    name( Атом, [Код | _ ]).

6. 5

plural( Существительное, Существительные) :-

    name( Существительное, СписокКодов),

    name( s, КодS),

    конк( СписокКодов, КодS, НовыйСписокКодов),

    name( Существительные, НовыйСписокКодов).

Глава 7

7. 2

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

    var( Список),  !,

                        % Переменная Список представляет пустой список

Список = [Элемент | Хвост].

добавить( Элемент, [ _ | Хвост]) :-

    добавить( Элемент, Хвост).

принадлежит( X, Список) :-

    var( Список),  !,

                    % Переменная Список представляет пустой список,

                           % поэтому X не может ему принадлежать

fail.

принадлежит( X, [X | Хвост]).

принадлежит( X, [ _ | Хвост] ) :-

    принадлежит( X, Хвост).

Глава 8

8. 2

добавить_в_конец( L1-[Элемент | Z2], Элемент, L1 - Z2).

8. 3

обратить( А - Z, L - L) :-

                        % Результатом является пустой список,

                                % если A-Z представляет пустой список

    А == Z,  !.

обратить( [X | L] - Z, RL - RZ ) :-

                        % Непустой список

    обратить( L - Z, RL - [X | RZ].

Глава 9

9. 1

список( [ ]).

список( [ _ | Хвост]) :-

    список( Хвост).

9. 2

принадлежит( X, X затем ЧтоУгодно).

принадлежит( X, Y затем Спис) :-

    принадлежит( X, Спис).

9. 3

преобр( [ ], ничего_не_делать).

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

    преобр( Хвост, Остальные).

9. 4

преобр( [ ], ПустСпис, _, ПустСпис).

                                % Случай пустого списка

преобр( [Первый | Хвост], НовСпис, Функтор, Пустой) :-

    НовСпис =.. [Функтор, Первый, НовХвост],

    преобр( Хвост, НовХвост, Функтор, Пустой).

9. 8

сорт1( [ ], [ ]).

сорт1( [X], [X]).

сорт1( Спис, УпорСпис) :-

    разбить( Спис, Спис1, Спис2),

                            % Разбить на 2 прибл. равных списка

    сорт1( Спис1, Упор1),

    сорт1( Спис2, Упор2),

    слить( Упор1, Упор2, УпорСпис).

                            % Слить отсортированные списки

разбить( [ ], [ ], [ ]).

разбить( [X], [X], [ ]).

разбить( [X, Y | L], [X | L1], [Y | L2]) :-

                            % X и Y помещаются в разные списки

    разбить( L, L1, L2).

9. 9

(а)    двдерево( nil).

        двдерево( д( Лев, Кор, Прав) ) :-

            двдерево( Лев),

            двдерево( Прав).

9. 10

глубина( пусто, 0).

глубина( д( Лев, Кор, Прав), Г) :-

    глубина( Лев, ГЛ),

    глубина( Прав, ГП),

    макс( ГЛ, ГП, МГ),

    Г is МГ + 1.

макс( А, В, А) :-

    А >= В,  !.

макс( А, В, В).

9. 11

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

линеаризация( д( Лев, Кор, Прав), Спис) :-

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

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

12 великих трагедий
12 великих трагедий

Книга «12 великих трагедий» – уникальное издание, позволяющее ознакомиться с самыми знаковыми произведениями в истории мировой драматургии, вышедшими из-под пера выдающихся мастеров жанра.Многие пьесы, включенные в книгу, посвящены реальным историческим персонажам и событиям, однако они творчески переосмыслены и обогащены благодаря оригинальным авторским интерпретациям.Книга включает произведения, созданные со времен греческой античности до начала прошлого века, поэтому внимательные читатели не только насладятся сюжетом пьес, но и увидят основные этапы эволюции драматического и сценаристского искусства.

Александр Николаевич Островский , Иоганн Вольфганг фон Гёте , Оскар Уайльд , Педро Кальдерон , Фридрих Иоганн Кристоф Шиллер

Драматургия / Проза / Зарубежная классическая проза / Европейская старинная литература / Прочая старинная литература / Древние книги
Волчья тропа
Волчья тропа

Мир после ядерной катастрофы. Человечество выжило, но высокие технологии остались в прошлом – цивилизация откатилась назад, во времена Дикого Запада.Своенравная, строптивая Элка была совсем маленькой, когда страшная буря унесла ее в лес. Суровый охотник, приютивший у себя девочку, научил ее всему, что умел сам, – ставить капканы, мастерить ловушки для белок, стрелять из ружья и разделывать дичь.А потом она выросла и узнала страшную тайну, разбившую вдребезги привычную жизнь. И теперь ей остается только одно – бежать далеко на север, на золотые прииски, куда когда-то в поисках счастья ушли ее родители.Это будет долгий, смертельно опасный и трудный путь. Путь во мраке. Путь по Волчьей тропе… Путь, где единственным защитником и другом будет таинственный волк с черной отметиной…

Алексей Семенов , Бет Льюис , Даха Тараторина , Евгения Ляшко , Сергей Васильевич Самаров

Фантастика / Приключения / Боевик / Славянское фэнтези / Прочая старинная литература