Читаем Программирование на языке Пролог для искусственного интеллекта полностью

принадлежит( 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),

 линеаризация( Прав, Спис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С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

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

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

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

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

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

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