// 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 abs(x)+abs(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
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку