Читаем 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, [ ]).

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

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

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных