Вход/Регистрация
Prolog
вернуться

Неизвестно

Шрифт:

чк( Поз, Чх : Чу),

( Лх = Чх; Лу = Чу),

% Ладья и черный король на одной линии

ход( ход_ладьей, Поз, Л-Лх : Лу, Поз1).

ход( разреш, б..П, М, П1) :-

( Огр = сначала_диаг; Огр = ход ладьей),

ход( Огр, б..П, М, П1).

ход( разреш, ч..Б..Л..Ч..Г, Ч-Ч1, б..Б..Л..Ч1..Г1) :-

Г1 is Г + 1,

сосед( Ч, Ч1),

not шах( б..Б..Л..Ч1..Г1).

разрход( Поз, Ход, Поз1) :-

ход( разреш, Поз, Ход, Поз1).

шах( _..Б..Лх : Лу..Чх : Чу.._ ) :-

сосед( Б, Чх : Чу); % Короли рядом

( Лх = Чх; Лу = Чу),

Лх : Лу \== Чх : Чу, % Нет взятия ладьи

not мешает( Лх : Лу, Б, Чх : Чу).

мешает( S, S1, S1) :- !.

мешает( X1 : Y, X2 : Y, Х3 : Y) :-

упоряд( X1, Х2, Х3), !.

мешает( X : Y1, X : Y2, X : Y3) :-

упоряд( Y1, Y2, Y3).

упоряд( N1, N2, N3) :-

N1 < N2, N2 < N3;

N3 < N2, N2 < N1.

коорд( 1). коорд( 2). коорд( 3). коорд( 4).

коорд( 5). коорд( 6). коорд( 7). коорд( 8).

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

любая_поз( Поз).

ход_противника( б.._ ). % Противник ходит белыми

мат( Поз) :-

чей_ход( Поз, ч),

шах( Поз),

not разрход( Поз, _, _ ).

пат( Поз) :-

чей_ход( Поз, ч),

not шах( Поз),

not разрход( Поз, _, _ ).

уменьш_простр( Поз, КорнПоз) :-

простр( Поз, Пр),

простр( КорнПоз, КорнПр),

Пр < КорнПр.

ладья_под_боем( ЧейХод..Б..Л..Ч.._ ) :-

расст( Б, Л, Р1),

расст( Ч, Л, Р2),

( ЧейХод = б, !, Р1 > Р2 + 1;

ЧейХод = ч, !, Р1 > Р2 ).

ближе_к_клетке( Поз, КорнПоз) :-

расст_до_клетки( Поз, Р1),

расст_до_клетки( КорнПоз, Р2),

Р1 < Р2.

расст_до_клетки( Поз, Мрасст) :-

% Манхеттеновское расстояние

бк( Поз, БК), % между БК и критической клеткой

кк( Поз, КК), % Критическая клетка

  • Читать дальше
  • 1
  • ...
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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