Решение Python Задача «Ход короля»
Условие
Шахматный король ходит по горизонтали, вертикали и диагонали, но только на 1 клетку. Даны две различные клетки шахматной доски, определите, может ли король попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое (столбец и строка первой клетки, затем второй). Программа должна вывести YES или NO.
Логика решения (очень простыми словами)
Король за один ход может сдвинуться:
- максимум на 1 по столбцу
- и максимум на 1 по строке
То есть разница координат по каждой оси должна быть не больше 1.
Для этого удобно:
- найти
dx = x1 - x2,dy = y1 - y2 - убрать “минус”, чтобы сравнивать по модулю (без
abs, если хотите “по-детски”)
Решение (код на Python)
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
dx = x1 - x2
dy = y1 - y2
# делаем dx, dy неотрицательными (аналог abs)
if dx < 0:
dx = -dx
if dy < 0:
dy = -dy
if dx <= 1 and dy <= 1:
print("YES")
else:
print("NO")
Если dx и dy оба ≤ 1 — значит король либо:
- рядом по горизонтали/вертикали,
- либо по диагонали,
- либо на месте (но по условию клетки разные, так что “на месте” не будет).
Leave a Reply