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

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

Задать свой вопрос
1 ответ
// 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


, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт