укажите все клетки шахматного поля, находящиеся под боем коня, данного координатами
Укажите все клетки шахматного поля, находящиеся под боем жеребца, заданного координатами на шахматном поле. В Паскаль
Задать свой вопрос1 ответ
Leonid Galimbievskij
// PascalABC.NET 3.2, сборка 1437 от 03.05.2017
// Внимание! Если программа не работает, обновите версию!
type
tField=(char,integer);
function GetNewField(oldfld:tField;x,y:integer;var newfld:tField):boolean;
begin
Result:=true;
var xo:=oldfld[0];
case xo.ToLower of
'a':
case x of
-2,-1:Result:=false;
1:newfld:=(Succ(xo),0);
2:newfld:=(Succ(Succ(xo)),0)
end;
'b':
case x of
-2:Result:=false;
-1:newfld:=(Pred(xo),0);
1:newfld:=(Succ(xo),0);
2:newfld:=(Succ(Succ(xo)),0)
end;
'g':
case x of
-2:newfld:=(Pred(Pred(xo)),0);
-1:newfld:=(Pred(xo),0);
1:newfld:=(Succ(xo),0);
2:Result:=false
end;
'h':
case x of
-2:newfld:=(Pred(Pred(xo)),0);
-1:newfld:=(Pred(xo),0);
1,2:Result:=false
end;
else
case x of
-2:newfld:=(Pred(Pred(xo)),0);
-1:newfld:=(Pred(xo),0);
1:newfld:=(Succ(xo),0);
2:newfld:=(Succ(Succ(xo)),0)
end
end;
if Result=true then begin
var yo:=oldfld[1];
case yo of
1:
case y of
-2,-1:Result:=false;
else newfld:=(newfld[0],yo+y);
end;
2:
case y of
-2:Result:=false;
else newfld:=(newfld[0],yo+y);
end;
7:
case y of
-2,-1,1:newfld:=(newfld[0],yo+y);
2:Result:=false
end;
8:
case y of
-2,-1:newfld:=(newfld[0],yo+y);
1,2:Result:=false
end
else
newfld:=(newfld[0],yo+y);
end
end
end;
begin
var ax:=Arr(-2,-1,1,2);
var ay:=ax;
var s:=ReadlnString('Укажите клетку, на которой стоит жеребец');
var f1,f2:tField;
f1:=(s[1],s[2].ToDigit);
foreach var x in ax do
foreach var y in ay do
if абс(x)+абс(y)=3 then
if GetNewField(f1,x,y,f2) then Print(f2[0]+f2[1]);
Writeln
end.
Образцы
Укажите клеточку, на которой стоит жеребец b1
a3 c3 d2
Укажите клетку, на которой стоит жеребец C5
A4 A6 B3 B7 D3 D7 E4 E6
// Внимание! Если программа не работает, обновите версию!
type
tField=(char,integer);
function GetNewField(oldfld:tField;x,y:integer;var newfld:tField):boolean;
begin
Result:=true;
var xo:=oldfld[0];
case xo.ToLower of
'a':
case x of
-2,-1:Result:=false;
1:newfld:=(Succ(xo),0);
2:newfld:=(Succ(Succ(xo)),0)
end;
'b':
case x of
-2:Result:=false;
-1:newfld:=(Pred(xo),0);
1:newfld:=(Succ(xo),0);
2:newfld:=(Succ(Succ(xo)),0)
end;
'g':
case x of
-2:newfld:=(Pred(Pred(xo)),0);
-1:newfld:=(Pred(xo),0);
1:newfld:=(Succ(xo),0);
2:Result:=false
end;
'h':
case x of
-2:newfld:=(Pred(Pred(xo)),0);
-1:newfld:=(Pred(xo),0);
1,2:Result:=false
end;
else
case x of
-2:newfld:=(Pred(Pred(xo)),0);
-1:newfld:=(Pred(xo),0);
1:newfld:=(Succ(xo),0);
2:newfld:=(Succ(Succ(xo)),0)
end
end;
if Result=true then begin
var yo:=oldfld[1];
case yo of
1:
case y of
-2,-1:Result:=false;
else newfld:=(newfld[0],yo+y);
end;
2:
case y of
-2:Result:=false;
else newfld:=(newfld[0],yo+y);
end;
7:
case y of
-2,-1,1:newfld:=(newfld[0],yo+y);
2:Result:=false
end;
8:
case y of
-2,-1:newfld:=(newfld[0],yo+y);
1,2:Result:=false
end
else
newfld:=(newfld[0],yo+y);
end
end
end;
begin
var ax:=Arr(-2,-1,1,2);
var ay:=ax;
var s:=ReadlnString('Укажите клетку, на которой стоит жеребец');
var f1,f2:tField;
f1:=(s[1],s[2].ToDigit);
foreach var x in ax do
foreach var y in ay do
if абс(x)+абс(y)=3 then
if GetNewField(f1,x,y,f2) then Print(f2[0]+f2[1]);
Writeln
end.
Образцы
Укажите клеточку, на которой стоит жеребец b1
a3 c3 d2
Укажите клетку, на которой стоит жеребец C5
A4 A6 B3 B7 D3 D7 E4 E6
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов