Неизвестно - Prolog

Здесь есть возможность читать онлайн «Неизвестно - Prolog» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Старинная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Prolog: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Prolog»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Prolog — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Р =< Р1.

простр_больше_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 - Лу ),

Пр is СторонаХ * СторонаY, !;

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

кк( _..Б..Лх : Лу.. Чх : Чу.._, Кх : Ку) :-

% Критическая клетка

( Чх < Лх, !, Кх is Лх - 1; Кх is Лх + 1),

( Чу < Лу, !, Ку is Лу - 1; Ку is Лу + 1).

% Процедуры для отображения позиций

отобр( Поз) :-

nl,

коорд( Y), nl,

коорд( X),

печ_фиг( X : Y, Поз),

fail.

отобр( Поз) :-

чей_ход( Поз, ЧХ), глуб( Поз, Г),

nl, write( 'ЧейХод='), write( ЧХ),

write( 'Глубина='), write( Г), nl.

печ_фиг( Клетка, Поз):-

бк( Поз, Клетка), !, write( 'Б');

бл( Поз, Клетка), !, write( 'Л');

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Prolog»

Представляем Вашему вниманию похожие книги на «Prolog» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Prolog»

Обсуждение, отзывы о книге «Prolog» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x