Укажите все клетки шахматного поля, находящиеся под боем коня, заданного координатами на шахматном поле. в паскаль

ludmilacernakov ludmilacernakov    2   31.08.2019 07:00    0

Ответы
Артем620 Артем620  03.08.2020 14:16
// 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

Укажите все клетки шахматного поля, находящиеся под боем коня, заданного координатами на шахматном п
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика