Предмет: Информатика, автор: TARANTULASHEAD

Python программирование
Поле шахматной доски определяется парой натуральных чисел, каждое из ко-
торых не превосходит 8: первое число — номер вертикали (при счете слева
направо), второе — номер горизонтали (при счете снизу вверх). Даны нату-
ральные числа a, b, c, d, e, f, каждое из которых не превосходит 8. Записать
условие, при котором белая фигура, расположенная на поле (a, b), может од-
ним ходом пойти на поле (e, f), не попав при этом под удар черной фигуры,
находящейся на поле (c, d). Рассмотреть следующие варианты сочетаний бе-
лой и черной фигур:
а) ладья и ладья;
л) конь и ферзь;
б) ладья и ферзь;
м) конь и слон;
в) ладья и конь;
н) слон и слон;
г) ладья и слон;
о) слон и ферзь;
д) ферзь и ферзь;
п) слон и конь;
е) ферзь и ладья;
р) слон и ладья;
ж) ферзь и конь;
с) король и слон;
з) ферзь и слон;
т) король и ферзь;
и) конь и конь;
у) король и конь;
к) конь и ладья;
ф) король и ладья.

Ответы

Автор ответа: asilvejstruk
1

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)

Похожие вопросы