Мини-урок · перед практикой
Ход короля
Король меняет каждую координату не более чем на единицу.
Как к ней подойти
Потренируйтесь переводить условие в проверку: какие случаи возможны и в каком порядке их проверять.
Коротко о теме
Ветвление выбирает один из нескольких вариантов. Запишите каждый случай словами, затем переведите их в if, elif и else. Отдельно проверьте границы: равенство часто меняет ответ.
Ключевая идея · Максимум модулей разностей
Максимум равен 1 ровно для восьми соседних клеток; совпадающие клетки исключены.
Проверьте перед запуском
- Диагональный ход разрешён.
- Нельзя проверять только сумму расстояний: диагональ меняет две координаты.
После практики
Сравните свой подход
Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.
Ваше принятое решение
Рекомендуемое решение: Максимум модулей разностей
Максимум равен 1 ровно для восьми соседних клеток; совпадающие клетки исключены.
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
print('YES' if max(abs(x1 - x2), abs(y1 - y2)) == 1 else 'NO')
Время: O(1). Память: O(1).
Другой способ: Проверка восьми направлений
Явно создаём восемь разрешённых векторов хода и проверяем перемещение по множеству.
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
directions = {(dx, dy) for dx in (-1, 0, 1) for dy in (-1, 0, 1) if dx != 0 or dy != 0}
print('YES' if (x2 - x1, y2 - y1) in directions else 'NO')
Время: O(1). Память: O(1), восемь направлений.