Python программирование
Поле шахматной доски определяется парой натуральных чисел, каждое из ко-
торых не превосходит 8: первое число — номер вертикали (при счете слева
направо), второе — номер горизонтали (при счете снизу вверх). Даны нату-
ральные числа a, b, c, d, e, f, каждое из которых не превосходит 8. Записать
условие, при котором белая фигура, расположенная на поле (a, b), может од-
ним ходом пойти на поле (e, f), не попав при этом под удар черной фигуры,
находящейся на поле (c, d). Рассмотреть следующие варианты сочетаний бе-
лой и черной фигур:
а) ладья и ладья;
л) конь и ферзь;
б) ладья и ферзь;
м) конь и слон;
в) ладья и конь;
н) слон и слон;
г) ладья и слон;
о) слон и ферзь;
д) ферзь и ферзь;
п) слон и конь;
е) ферзь и ладья;
р) слон и ладья;
ж) ферзь и конь;
с) король и слон;
з) ферзь и слон;
т) король и ферзь;
и) конь и конь;
у) король и конь;
к) конь и ладья;
ф) король и ладья.
Ответы
def can_white_move(a, b, c, d, e, f, white, black):
# Rook and rook
if white == "rook" and black == "rook":
# The white piece can move to (e, f) if either a == e or b == f
return a == e or b == f
# Knight and queen
elif white == "knight" and black == "queen":
# The white piece can always move
return True
# Rook and queen
elif white == "rook" and black == "queen":
# The white piece can move to (e, f) if either a == e or b == f
return a == e or b == f
# Horse and elephant
elif white == "horse" and black == "elephant":
# The white piece can always move
return True
# Rook and knight
elif white == "rook" and black == "knight":
# The white piece can move to (e, f) if either a == e or b == f
return a == e or b == f
# Elephant and elephant
elif white == "elephant" and black == "elephant":
# The white piece can move diagonally if a-c == e-c and b-d == f-d
return abs(a-c) == abs(e-c) and abs(b-d) == abs(f-d)
# Rook and bishop
elif white == "rook" and black == "bishop":
# The white piece can move to (e, f) if either a == e or b == f
return a == e or b == f
# Queen and queen
elif white == "queen" and black == "queen":
# The white piece can move to (e, f) if either a == e, b == f, or abs(a-c) == abs(e-c) and abs(b-d) == abs(f-d)
return a == e or b == f or abs(a-c) == abs(e-c) and abs(b-d) == abs(f-d)
# Queen and rook
elif white == "queen" and black == "rook":
# The white piece can move to (e, f) if either a == e, b == f, or abs(a-c) == abs(e-c) and abs(b-d) == abs(f-d)
return a == e or b == f or abs(a-c) == abs(e-c) and abs(b-d) == abs(f-d)
# Queen and knight
elif white == "queen" and black == "knight":
# The white piece can move to (e, f) if either a == e, b == f, or abs(a-c) == abs(e-c) and abs(b-d) == abs(f-d)