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

    линеаризация( Лев, Спис1),

    линеаризация( Прав, Спис2),

    конк( Спис1, [Кор | Спис2], Спис).

9. 12

максэлемент( д( _, Кор, nil), Кор) :-  !.

                            % Корень - самый правый элемент

максэлемент( д( _, _, Прав,), Макс) :-

                            % Правое поддерево непустое

    максэлемент( Прав, Макс).

9. 13

внутри( Элем, д( _, Элем, _ ), [ Элем]).

внутри( Элем, д( Лев, Кор, _ ), [Кор | Путь]) :-

    больше( Кор, Элем),

    внутри( Элем, Лев, Путь).

внутри( Элем,д( _, Кор, Прав), [Кор | Путь]) :-

    больше( Элем, Кор),

    внутри( Элем, Прав, Путь).

9. 14

% Отображение двоичного дерева, растущего сверху вниз

% Предполагается, что каждая вершина занимает при печати

% один символ

отобр( Дер) :-

    уровни( Дер, 0, да).

                            % Обработать все уровни

уровни( Дер, Уров, нет) :-  !.

                            % Ниже уровня Уров больше нет вершин

уровни( Дер, Уров, да) :-

                            % Обработать все уровни, начиная с Уров

    вывод( Дер, Уров, 0, Дальше), nl,

                            % Вывести вершины уровня Уров

    Уров1 is Уров + 1,

    уровни( Дер, Уров1, Дальше).

                            % Обработать следующие уровни

вывод( nil, _, _, _, _ ).

вывод( д( Лев, X, Прав), Уров, ГлубХ, Дальше) :-

    Глуб1 is ГлубХ + 1,

    вывод( Лев, Уров, Глуб1, Дальше),

                            % Вывод левого поддерева

( Уров = ГлубХ,  !,

                            % X на нашем уровне?

        write( X), Дальше = да;

                            % Вывести вершину, продолжить

        write(' ') ),

                            % Иначе - оставить место

        вывод( Прав, Уров, Глуб1, Дальше).

                            % Вывод левого поддерева

Глава 10

10. 1

внутри( Элем, л( Элем)).             % Элемент найден в листе

внутри( Элем, в2( Д1, М, Д2) ):-

                                                    % Вершина имеет два поддерева

    больше( М, Элем),  !,           % Вершина не во втором поддереве

    внутри( Элем, Д1);               % Поиск в первом поддереве

    внутри( Элем, Д2).               % Иначе - во втором поддереве

внутри( Элем, в3( Д1, М2, Д2, М3, Д3) ):-

                                                    % Вершина имеет три поддерева

    больше( М2, Элем),  !,

                % Элемент не во втором и не в третьем поддереве

    внутри( Элем, Д1);               % Поиск в первом поддереве

    больше( М3, Элем),  !,         % Элемент не в третьем поддереве

    внутри( Элем, Д2);               % Поиск во втором поддереве

    внутри( Элем, Д3).               % Поиск в третьем поддереве

10. 3

avl( Дер) :-

    аvl( Дер, Глуб).         % Дер является AVL-деревом глубины Глуб

avl( nil, 0).                     % Пустое дерево  -   AVL -дерево глубины 0

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

    avl( Лев, ГЛ),

    avl( Прав, ГП),

    ( ГЛ is ГП; ГЛ is ГП + 1; ГЛ is ГП - 1),

                                    % Глубины поддеревьев примерно совпадают

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

макс1( U, V, М) :-                                     % М = 1 + макс( U, V)

    U > V,  !, М is U + 1;

    М is V + 1.

Глава 11

11. 1

вглубину1( [Верш | Путь], [Верш | Путь]) :-

    цель( Верш).

вглубину1( [Верш | Путь], Решение) :-

    после( Верш, Верш1),

    not принадлежит( Верш1, Путь),

    вглубину1( [ Верш1, Верш | Путь], Решение).

11. 6

решить( СтартМнож, Решение) :-

                            % СтартМнож - множество стартовых вершин

    bagof( [Верш], принадлежит( Верш, СтартМнож),

                                                        Пути),

    вширину( Пути, Решение).

Назад | Содержание | Вперёд

Назад | Содержание | Вперёд

    ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ

    А

    абстракция данных

    автомат недетерминированный

    автоматический возврат      ещё 1 ссылка

    альфа-бета алгоритм

          программная реализация

          эффективность

    анонимная переменная

    арифметика в Прологе

    арифметические

          операторы

          ребусы

    арность

    атом

    атомы

          декомпозиция      ещё 1 ссылка

          синтаксис

          создание

    ALO

          реализация

    AVL-справочник

          вставление элемента

    AVL-дерево

    Б

    база

          данных в Прологе

          знаний

    быстрая сортировка

    В

    вариант предложения

    вероятностные знания

    возврат автоматический      ещё 1 ссылка

    возвращенные оценки

    вопрос типа

          "как"      ещё 1 ссылка

          "почему"      ещё 1 ссылка

    встроенные операторы

          +,  -,  *,  /,  div,  is,  mod      ещё 1 ссылка

    встроенные процедуры

          >,  <,  >=,   =<,   =:=,  =\=

          !      ещё 1 ссылка

          =..

          ==

          \==

          arg

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

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

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

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

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

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

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

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

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