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