5 Шахматы
Даны две различные клетки шахматной доски. Напишите программу, которая определяет, может ли фигура попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки. Программа должна вывести «YES», если из первой клетки ходом фигуры можно попасть во вторую или «NO» в противном случае.
При решении данных задач важно понять, какой алгоритм изменений X
и Y
при движении фигуры.
А функция модуля abs()
поможет отрицательное число сделать положительным,т.е.вернет абсолютное
значение числа.
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
Заданы две клетки шахматной доски. Напишите программу, которая определяет имеют ли указанные клетки один цвет или нет. Если они покрашены в один цвет, то выведите слово «YES», а если в разные цвета — то «NO».
print('YES' if (int(input()) + int(input())) % 2 == (int(input()) + int(input())) % 2 else 'NO')
2
2
2
5
NO
Шахматный слон ходит по диагоналям. Следовательно в результате любого правильного хода
координаты x
и y
изменятся на одинаковую величину. При этом знак изменений (- или +) может быть
любым, а ход останется правильным.
print("YES" if abs(x1 - x2) == abs(y1 - y2) else "NO")
Шахматный конь ходит буквой «Г».
print("YES" if (abs(x1 - x2), abs(y1 - y2)) in [(1, 2), (2, 1)] else "NO")
Шахматный ферзь ходит по диагонали, горизонтали или вертикали.
dx = abs(x1 - x2)
dy = abs(y1 - y2)
print("YES" if dx == dy or dx == 0 and dy > 0 or dx > 0 and dy == 0 else "NO")
Шахматный король ходит по горизонтали, вертикали и диагонали, но только на 1 клетку.
if (x1 >= x2 - 1 and x1 <= x2 + 1) and (y1 >= y2 - 1 and y1 <= y2 + 1):
print('YES')
else:
print('NO')
Другое решение: сформировали кортеж из абсолютных разница (abs()
, функция модуля) координат
по x
и y
.
print("YES" if (abs(x1 - x2), abs(y1 - y2)) in[(0, 1), (1, 0), (1, 1)] else "NO")
4
4
2
5
NO