Решение Python Задача «Ход короля»

Условие

Шахматный король ходит по горизонтали, вертикали и диагонали, но только на 1 клетку. Даны две различные клетки шахматной доски, определите, может ли король попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое (столбец и строка первой клетки, затем второй). Программа должна вывести YES или NO.

Логика решения (очень простыми словами)

Король за один ход может сдвинуться:

  • максимум на 1 по столбцу
  • и максимум на 1 по строке

То есть разница координат по каждой оси должна быть не больше 1.

Для этого удобно:

  1. найти dx = x1 - x2, dy = y1 - y2
  2. убрать “минус”, чтобы сравнивать по модулю (без 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

Your email address will not be published. Required fields are marked *

*