Вторник, 07.05.2024, 16:16
Приветствую Вас Гость


Меню сайта
Категории раздела
Главная » Статьи » Подготовка к ЕГЭ и олимпиадам » Решения олимпиадных задач

Задача "Дамка и две пешки"

В шашечном эндшпиле остались белая дамка и две черных пешки, позиции которых известны. Ход белых. Сможет ли дамка срубить одну или сразу обе пешки?
Суть: если пешка стоит не у края и выполняется условие : координаты дамки x1,y1, координаты пешки x2,y2, координаты второй пешки x3, y2
Условие расположения на одной диагонали: abs (x1 – x2) = abs (y1 – y2)
Входные данные: координаты дамки и пешек
Выходные: Доска - матрица 8х8, пустые клетки – «.», дамка – «D», пешки – «P». Количество бьющихся пешек

 

 

program z2;

var i,j,s:integer;

x:array [1..3] of integer; y:array [1..3] of integer; d:array [1..8,1..8] of char; f,f1:text;

begin

assign(f,'i2.txt'); reset(f);

assign(f1,'o2.txt');rewrite(f1);

for i:=1 to 3 do

read(f,x[i],y[i]);

 

{заполнение и вывод доски}

for i:=1 to 8 do

for j:=1 to 8 do

if (i=x[1]) and (j=y[1]) then d[i,j]:='D' 

else if ((i=x[2]) and (j=y[2])or (i=x[3]) and (j=y[3]))then d[i,j]:='P'

else d[i,j]:='.';

for i:=1 to 8 do begin

for j:=1 to 8 do

write(f1,d[i,j],' ');writeln(f1);end;

 

{проверка условия на бой пешек}

if (abs(x[1]-x[2])=abs(y[1]-y[2])) and (x[2]<>1) and (x[2]<>8) and (y[2]<>1) and (y[2]<>8) then s:=s+1;

if (abs(x[1]-x[3])=abs(y[1]-y[3])) and (x[3]<>1) and (x[3]<>8) and (y[3]<>1) and (y[3]<>8) then s:=s+1;

if (abs(x[2]-x[3])=abs(y[2]-y[3])) and (abs(x[2]-x[3])=1) or (abs(y[2]-y[3])=1) then s:=0;

writeln(f1,s);

close(f); close(f1);

end.

Категория: Решения олимпиадных задач | Добавил: Admin (13.11.2014)
Просмотров: 1055 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Поиск
Друзья сайта
Статистика
Рейтинг@Mail.ru