Как решить эту задачу в PYTHON
Поле шахматной доски определяется парой натуральных чисел, каждое из ко-
торых не превосходит 8: первое число — номер вертикали (при счете слева
направо), второе — номер горизонтали (при счете снизу вверх). Даны нату-
ральные числа a, b, c, d, каждое из которых не превосходит 8.
а) На поле (a, b) расположена ладья. Записать условие, при котором она угро-
жает полю (c, d).
б) На поле (a, b) расположен слон. Записать условие, при котором он угрожает
полю (c, d).
в) На поле (a, b) расположен король. Записать условие, при котором он может
одним ходом попасть на поле (c, d).
г) На поле (a, b) расположен ферзь. Записать условие, при котором он угрожа-
ет полю (c, d).
д) На поле (a, b) расположена белая пешка. Записать условие, при котором
она может одним ходом попасть на поле (c, d):
при обычном ходе;
когда она "бьет" фигуру или пешку соперника.
При ме ч а ни е
Белые пешки перемещаются на доске снизу вверх.
е) На поле (a, b) расположена черная пешка. Записать условие, при котором
она может одним ходом попасть на поле (c, d):
при обычном ходе;
когда она "бьет" фигуру или пешку соперника.
Примечание
Черные пешки перемещаются на доске сверху вниз.
ж) На поле (a, b) расположен конь. Записать условие, при котором он угрожа-
ет полю (c, d).
Ответы
Ответ:
def rook_threatens(a, b, c, d):
return a == c or b == d
def elephant_threatens(a, b, c, d):
return abs(a-c) == abs(b-d)
def king_can_move(a, b, c, d):
return abs(a-c) <= 1 and abs(b-d) <= 1
def queen_threatens(a, b, c, d):
return a == c or b == d or abs(a-c) == abs(b-d)
def white_pawn_can_move(a, b, c, d):
return (a == c and b == d+1) or (a == c+1 and b == d+1) or (a == c-1 and b == d+1)
def black_pawn_can_move(a, b, c, d):
return (a == c and b == d-1) or (a == c+1 and b == d-1) or (a == c-1 and b == d-1)
def knight_threatens(a, b, c, d):
return (abs(a-c) == 2 and abs(b-d) == 1) or (abs(a-c) == 1 and abs(b-d) == 2)
Объяснение:
а) Ладья: Ладья угрожает полю (c,d), если a == c или b == d.
b) Слон: слон угрожает полю (c,d), если abs(a-c) == abs(b-d).
в) Король: Король может добраться до поля (c,d) за один ход, если abs(a-c) <= 1 и abs(b-d) <= 1.
г) Ферзь: Ферзь угрожает полю (c,d), если a == c или b == d или abs(a-c) == abs(b-d).
д) Белая пешка:
При обычном ходе: Белая пешка может добраться до поля (c,d) за один ход, если a == c и b == d+1.
Когда он «захватывает» фигуру или пешку противника: Белая пешка может добраться до поля (c, d) за один ход, если a == c+1 и b == d+1 или a == c-1 и b == д+1.
е) Черная пешка:
При обычном ходе: черная пешка может добраться до поля (c,d) за один ход, если a == c и b == d-1.
Когда он «захватывает» фигуру или пешку противника: черная пешка может добраться до поля (c, d) за один ход, если a == c+1 и b == d-1 или a == c-1 и b == д-1.
g) Рыцарь: Конь угрожает полю (c,d), если (abs(a-c) == 2 и abs(b-d) == 1) или (abs(a-c) == 1 и abs(b-d) == 2) .