Sidebar LogoHomeIndexTODOЗадачиIndexGitHub </> Back Next 5 Шахматы

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

 


Back Next