Во вложении показана принятая условная схема нумерации полей.
Предполагается, что если ферзь стоит на клетке с координатами (3,4), он может пойти по горизонтали, вертикали или диагонали. Соответствующие направления выделены цветом.
Чтобы взять фигуру (или пешку) противника по горизонтали, у обоих фигур должны быть одинаковы координаты строки (первые в паре).
Чтобы взять фигуру противника по вертикали, у обоих фигур должны быть одинаковы координаты столбца (вторые в паре в паре).
Наконец, чтобы взять фигуру противника по диагонали, у обоих фигур должна быть одинакова абсолютная величина разницы как между строками, так и между колонками.
Последнее правило взятия сложное, поэтому запишем его в условных обозначениях. Пусть Rq и Cq - соответственно номера строки и столбца, пересечение которых указывает положение клетки с ферзем. Пусть также фигура противника находится на клетке, заданной координатами Rx и Cx.
Тогда последнее правило можно записать в виде |Rq-Rx| = |Cq-Cx|
Теперь можно записать логическое выражение, значение которого истинно, если ферзь может взять фигуру (или пешку) противника.
(Rq=Rx) ∨ (Cq=Cx) ∨ (|Rq-Rx| = |Cq-Cx|)
<em>// PascalABC.NET 3.3, сборка 1625 от 17.01.2018</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var (Rq,Cq):=ReadInteger2('Введите номера горизонтали и вертикали ферзя:');
var (Rx,Cx):=ReadInteger2('Введите номера горизонтали и вертикали фигуры:');
if (Rq=Rx) or (Cq=Cx) or (Abs(Rq-Rx)=Abs(Cq-Cx)) then Writeln('Yes')
else Writeln('No')
end.
<u>Пример</u>
Введите номера горизонтали и вертикали ферзя: 3 4
Введите номера горизонтали и вертикали фигуры: 6 1
Yes
Тусирип жверси информатикадан жаксы блем
1, если цифровая.
()()()()()()()()()()()()()(
1. Формат с фиксированной запятой (фиксированной точкой) предполагает размещение знака числа в самом старшем (левом) бите, а остальные биты отводятся под двоичное представление числа. Сама десятичная точка (запятая) не хранится, она подразумевается. Наибольшее распространение получили два способа представления чисел: когда запятая фиксируется после самого младшего разряда (и тогда мы имеем целое число с нулевой дробной частью), либо когда запятая фиксируется сразу после знакового разряда (и тогда мы имеем десятичную дробь с нулевой целой частью). В процессорах фирмы Intel и программно совместимых с ними, отдельное представление данных с фиксированной точкой отсутствует; в качестве такого представления используются целые числа, что фактически совпадает с первым из описанных способов. При этом в двух байтах под разряды числа отводятся 15 бит. Следовательно, максимальное число может быть равно 2^15-1=32767.
2. Ноль в знаковом разряде означает, что число неотрицательное.
3. В коде ASCII для кодировки символов используется таблица размером 256 символов, так что символ занимает один байт. При этом первая половина таблицы (коды 0-127) фиксирована, а вторая может заполняться символами национальных алфавитов, поэтому существует множество кодовых таблиц ASCII. Например, в системе MS DOS для России используется кодовая таблица CР866, а в Windows - СР1251 В UNICODE для кодирования символа используются два байта, что позволяет иметь 65536 кодов.