Чтобы решить задачу, нужно определить, может ли ферзь переместиться с одной клетки на другую за один ход. Ферзь в шахматах может двигаться по горизонтали, вертикали и диагонали на любое количество клеток. Таким образом, ферзь может попасть из первой клетки во вторую, если выполняется одно из следующих условий:
- Клетки находятся на одной горизонтали (то есть имеют одинаковую строку).
- Клетки находятся на одной вертикали (то есть имеют одинаковый столбец).
- Клетки находятся на одной диагонали (разница между столбцами равна разнице между строками по модулю).
Для решения этой задачи на Python можно использовать следующий алгоритм:
- Прочитать четыре числа:
x1
, y1
, x2
, y2
. Эти числа обозначают координаты двух клеток на шахматной доске.
- Проверить, выполняется ли одно из условий движения ферзя.
- Вывести "YES", если ферзь может попасть с первой клетки на вторую, или "NO" в противном случае.
Вот пример реализации этой задачи на языке Python:
def can_queen_move(x1, y1, x2, y2):
# Проверяем, находятся ли клетки на одной горизонтали или вертикали
if x1 == x2 or y1 == y2:
return "YES"
# Проверяем, находятся ли клетки на одной диагонали
if abs(x1 - x2) == abs(y1 - y2):
return "YES"
# Если ни одно из условий не выполнено, ферзь не может переместиться
return "NO"
# Чтение входных данных
x1, y1, x2, y2 = map(int, input().split())
# Выводим результат
print(can_queen_move(x1, y1, x2, y2))
Объяснение кода:
Чтение данных: map(int, input().split())
считывает четыре числа из ввода, разделенные пробелами, и преобразует их в тип int
.
Проверка условий:
x1 == x2
: проверка, находятся ли клетки на одной вертикали.
y1 == y2
: проверка, находятся ли клетки на одной горизонтали.
abs(x1 - x2) == abs(y1 - y2)
: проверка, находятся ли клетки на одной диагонали. Мы используем абсолютное значение разностей, чтобы сравнить их, поскольку для диагонального движения разности между координатами должны быть одинаковыми.
Вывод результата: Если выполняется хотя бы одно из условий, выводится "YES", иначе — "NO".