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

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

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

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

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

        мат( Поз) :-

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

                шах( Поз),

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

        пат( Поз) :-

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

                not шах( Поз),

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

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

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

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

                Пр < КорнПр.

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

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

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

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

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

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

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

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

                Р1 < Р2.

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

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

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

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

                манх_расст( БК, КК, Мрасст).

        раздел( _..Бх : Бу..Лх : Лу.. Чх : Чу.._ ) :-

                упоряд( Бх, Лх, Чх),  !;

                упоряд( Бу, Лу, Чу).

        l_конфиг( _..Б..Л..Ч.._ ) :-                           % L - конфигурация

                манх_расст( Б, Ч, 2),

                манх_расст( Л, Ч, 3).

        не дальше_от_ладьи( _..Б..Л.._, _..Б1..Л1.._ ) :-

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

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

                Р =< Р1.

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

0

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

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