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

где Поз - выбранная начальная позиция. Если в позиции Поз ходит противник, то программа принимает его ход, в противном случае - "консультируется" с таблицей советов, приложенной к программе, порождает форсированное дерево и делает свой ход в соответствии с этим деревом. Так продолжается до окончания игры, которое обнаруживает предикат конец_игры (например, если поставлен мат).

Форсированное дерево - это дерево ходов, представленное в программе следующей структурой:

        Ход . . [ Ответ1 . . Фдер1, Ответ2 . . Фдер2, . . . ]

Здесь ".." - инфиксный оператор; Ход - первый ход "игрока"; Ответ1, Ответ2, ... - возможные ответы противника; Фдер1, Фдер2, ... - форсированные поддеревья для каждого из этих ответов

.

15. 6. 2.    Программа на языке советов для эндшпиля

                 "король и ладья против короля"

Общий принцип достижения выигрыша королем и ладьей против единственной фигуры противника, короля, состоит в том, чтобы заставить короля отступить к краю доски или, при необходимости, загнать его в угол, а затем поставить мат в несколько ходов. В детальном изложении эта стратегия выглядит так:

Повторять циклически, пока не будет поставлен мат (постоянно проверяя, что не возникла патовая позиция и что нет нападения на незащищенную ладью):

    (1)        Найти способ поставить королю противника мат в два хода.

    (2)        Если не удалось, то найти способ уменьшить ту область доски, в которой

                король противника "заперт" под воздействием ладьи.

    (3)        Если и это не удалось, то найти способ приблизить своего короля к королю

                противника.

    (4)        Если ни один из элементарных советов 1, 2, или 3 не выполним, то найти

                способ сохранить все имеющиеся к настоящему моменту "достижения" в

                смысле (2) и (3) (т. е. сделать выжидающий ход).

    (5)        Если ни одна из целей 1, 2, 3 или 4 не достижима, то найти способ получить

                позицию, в которой ладья занимает вертикальную или горизонтальную

                линию, отделяющую одного короля от другого.

Описанные выше принципы реализованы во всех деталях в таблице советов на языке AL0, показанной на рис. 15.7. Эта таблица может работать под управлением интерпретатора рис. 15.6. Рис. 15.8 иллюстрирует смысл некоторых из предикатов, использованных в таблице советов, а также показывает, как эта таблица работает.

В таблице используются следующие предикаты:

Предикаты целей

    мат                                мат королю противника

    пат                                 пат королю противника

    потеря_ладьи              король противника может взять ладью

    ладья_под_боем          король противника может напасть на ладью прежде, чем наш

                                            король сможет ее защитить

    уменьш_простр           уменьшилось "жизненное пространство" короля противника,

                                            ограничиваемое ладьей

    раздел                           ладья занимает вертикальную или горизонтальную линию,

                                            разделяющую королей

    ближе_к_клетке         наш король приблизился к "критической клетке" (см. рис. 15.9),

                                            т.е. манхеттеновское расстояние до нее уменьшилось

    l_конфиг                      "L-конфигурация" (рис. 15.9)

    простр_больше_2       "жизненное пространство" короля противника занимает

                                          больше двух клеток

Предикаты, ограничивающие ходы

    глубина = N                  ход на глубине N дерева поиска

    разреш                           любой разрешенный ход

    ход_шах                         ход, объявляющий шах

    ход_ладьей                   ход ладьей

    нет_хода                       ни один ход не подходит

    сначала_диаг               ход королем, преимущественно по диагонали

% Окончание "король и ладья против короля" на языке AL0

% Правила

        правило_края:

                     если король_противника_на_краю и короли_рядом

                     то [мат_2, потеснить, приблизиться,

                             сохранить_простр, отделить_2, отделить_3].

        иначе_правило

                     если любая_поз

                     то [ потеснить, приблизиться, сохранить_простр,

                             отделить_2, отделить_3].

% Элементарные советы

        совет( мат_2,

                     мат :

                     не потеря_ладьи и король_противника_на_краю:

                     (глубина = 0) и разреш

                     затем (глубина = 2) и ход_шах :

                     (глубина = 1) и разреш ).

        совет( потеснить,

                     уменьш_простр и не ладья_под_боем и

                     раздел и не пат :

                     не потеря_ладьи :

                     (глубина = 0) и ход_ладьей :

                     нет_хода ).

        совет( приблизиться,

                     ближе _к_клетке и не ладья_под_боем и

                     (раздел или l_конфиг) и

                     (простр_больше_2 или не наш_король_на_краю):

                     не потеря_ладьи :

                     (глубина = 0) и сначала_диаг :

                     нет_хода ).

        совет( сохранить_простр,

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

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

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

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

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

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

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

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

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