простр_больше_2( Поз) :-

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

                Пр > 2.

        наш_король_на_краю( _..Х : Y.._ ) :-

                                                          % Белый король на краю

                ( X = 1,  !;  X = 8,  !;  Y = 1,  !;  Y = 8).

        король_противника_на_краю( _..Б..Л..Х : Y.._ ) :-

                                                          % Черный король на краю

                ( X = 1,  !;  X = 8,  !;  Y = 1,  !;  Y = 8).

        короли_рядом( Поз) :-                                       % Расстояние между королями  <  4

                бк( Поз, БК), чк( Поз, ЧК),

                расст( БК, ЧК, Р),

                Р < 4.

        потеря_ладьи( _..Б..Л..Л.._ )-                       % Ладья взята

        потеря_ладьи( ч..Б..Л..Ч.._ ) :-

                сосед( Ч, Л),                    % Черный король напал на ладью

                not сосед( Б, Л).              % Белый король не защищает ладью

        расст( X : Y, X1 : Y1, Р) :-                                % Расстояние до короля

                абс_разн( X, X1, Рх),

                абс_разн( Y, Y1, Ру),

                макс( Рх, Ру, Р).

        абс_разн( А, В, С) :-

                А > В,  !,  С is A - В;

                С is В - А.

        макс( А, В, М) :-

                А >= В,  !,  М = А;

                М = В.

        манх_расст( X : Y, X1 : Y1, Р) :-                  % Манхеттеновское расстояние

                абс_разн( X, X1, Рх),

                абс_разн( Y, Y1, Ру),

                P is Рх + Ру.

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

                                    % Область, в которой 'заперт' черный король

                бл( Поз, Лх : Лу),

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

                ( Чх < Лх, СторонаХ is Лх - 1;

                  Чх > Лх, СторонаХ is 8 - Лх ),

                ( Чу < Лу, СторонаY is Лу - 1;

                  Чу > Лу, СторонаY is 8 - Лу ),

Вы читаете Prolog
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату