Чтение онлайн

на главную - закладки

Жанры

Неизвестно

Шрифт:

% цель - это И / ИЛИ / НЕ комбинация. имен предикатов

удовл( Цель1 и Цель2, Поз, КорнПоз) :- !,

удовл( Цель1, Поз, КорнПоз),

удовл( Цель2, Поз, КорнПоз).

удовл( Цель1 или Цель2, Поз, КорнПоз) :- !,

( удовл( Цель1, Поз, КорнПоз);

удовл( Цель2, Поз, КорнПоз) ).

удовл( не Цель, Поз, КорнПоз) :- !,

not удовл( Цель, Поз, КорнПоз ).

удовл( Пред, Поз, КорнПоз) :-

( Усл =.. [Пред, Поз];

% Большинство предикатов не зависит от КорнПоз

Усл =.. [Пред, Поз, КорнПоз] ),

call( Усл).

% Интерпретация ограничений на ходы

ход( Ходы1 и Ходы2, Поз, Ход, Поз1) :- !,

ход( Ходы1, Поз, Ход, Поз1),

ход( Ходы2, Поз, Ход, Поз1).

ход( Ходы1 затем Ходы2, Поз, Ход, Поз1) :- !,

( ход( Ходы1, Поз, Ход, Поз1);

ход( Ходы2, Поз, Ход, Поз1) ).

% Доступ к компонентам элементарного совета

главцель( ГлЦ : _, ГлЦ).

поддержка( ГлЦ : ЦП : _, ЦП).

ходы_игрока( ГлЦ : ЦП : ХодыИгрока : _, Ходы Игрока).

ходы_противника( ГлЦ : ЦП: ХодыИгр : ХодыПр :_,

ХодыПр).

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

принадлежит( X, [Y | Спис]) :-

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

Рис. 15. 6. Миниатюрный интерпретатор языка AL0.

игра( Поз)

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

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

Ход . . [ Ответ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 иллюстрирует смысл некоторых из предикатов, использованных в таблице советов, а также показывает, как эта таблица работает.

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

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

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

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

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

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

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

Поделиться:
Популярные книги

Арканарский вор (Трилогия)

Шелонин Олег Александрович
Арканарский вор
Фантастика:
юмористическая фантастика
9.00
рейтинг книги
Арканарский вор (Трилогия)

Разбуди в себе исполина

Роббинс Энтони
Научно-образовательная:
психология
5.00
рейтинг книги
Разбуди в себе исполина

Булгаков

Варламов Алексей Николаевич
Проза:
историческая проза
современная проза
повесть
5.00
рейтинг книги
Булгаков

Кодекс Охотника XXXI

Винокуров Юрий
31. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Охотника XXXI

"Избранные историко-биографические романы". Компиляция. Книги 1-10

Джордж Маргарет
Проза:
историческая проза
5.00
рейтинг книги
Избранные историко-биографические романы. Компиляция. Книги 1-10

Франкенштейн: Антология

Шелли Мэри
1. Лучшее
Фантастика:
социально-философская фантастика
научная фантастика
ужасы и мистика
7.43
рейтинг книги
Франкенштейн: Антология

Твердь: русская борзая. Дилогия

Каляева Яна
Твердь: русская борзая
Фантастика:
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Твердь: русская борзая. Дилогия

Поход

Валериев Игорь
4. Ермак
Фантастика:
боевая фантастика
альтернативная история
6.25
рейтинг книги
Поход

"Фантастика 2026-91". Компиляция. Книги 1-9

Неженцева Екатерина
Фантастика 2026. Компиляция
Фантастика:
боевая фантастика
фэнтези
5.00
рейтинг книги
Фантастика 2026-91. Компиляция. Книги 1-9

Кодекс Практика. Тетралогия

Маревский Игорь
Внекатегорийный артефакт
Фантастика:
уся
фэнтези
фантастика: прочее
сянься
попаданцы
5.00
рейтинг книги
Кодекс Практика. Тетралогия

Повести и рассказы

Мильчаков Владимир Андреевич
Проза:
военная проза
7.00
рейтинг книги
Повести и рассказы

Я до сих пор не царь. Книга XXVII

Дрейк Сириус
27. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я до сих пор не царь. Книга XXVII

Играть... в тебя

Зайцева Мария
3. Звериные повадки Симоновых
Любовные романы:
современные любовные романы
5.25
рейтинг книги
Играть... в тебя

Гаргантюа и Пантагрюэль

Рабле Франсуа
Проза:
классическая проза
5.00
рейтинг книги
Гаргантюа и Пантагрюэль