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

12.286.*Шахматную доску будем представлять в виде квадратного символьного массива
размером 8х8. Даны натуральные числа V и g], указывающие номера верти-
кали (при счете слева направо) и горизонтали (при счете снизу вверх) для поля,
на котором стоит белая шахматная фигура, и числа v2 и g2 - указывающие
соответствующие координаты второй, черной, фигуры (15vj S8, 15g 58,
1 может пойти первая фигура, не попав под удар второй фигуры. Рассмотреть сле-
дующие варианты сочетаний первой и второй фигур:
л) конь и ферзь;
м) конь и слон;
н) слон и слон;
о) слон и ферзь;

Приложения:

Ответы

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

Ответ:

Для решения задачи можно создать функцию, которая будет принимать координаты двух фигур и проверять, может ли первая фигура пойти безопасно. Например, для случая конь и ферзь можно использовать следующий код на языке Python:

def can_move_safely(knight_pos, queen_pos):

# Проверяем, что координаты находятся в пределах доски

if knight_pos[0] < 0 or knight_pos[0] > 7 or knight_pos[1] < 0 or knight_pos[1] > 7 \

or queen_pos[0] < 0 or queen_pos[0] > 7 or queen_pos[1] < 0 or queen_pos[1] > 7:

return False

# Проверяем, что первая фигура - конь

if abs(knight_pos[0] - queen_pos[0]) == 2 and abs(knight_pos[1] - queen_pos[1]) == 1 \

or abs(knight_pos[0] - queen_pos[0]) == 1 and abs(knight_pos[1] - queen_pos[1]) == 2:

# Фигуры бьют друг друга

return False

# Проверяем, что первая фигура - ферзь

if knight_pos[0] == queen_pos[0] or knight_pos[1] == queen_pos[1] \

or abs(knight_pos[0] - queen_pos[0]) == abs(knight_pos[1] - queen_pos[1]):

# Фигуры бьют друг друга

return False

return True

Здесь knight_pos и queen_pos - это кортежи, содержащие координаты фигур. Например, (2, 3) означает, что фигура стоит на вертикали 2 и горизонтали 3.

Для проверки всех сочетаний фигур можно написать следующий код:

# Вариант л): конь и ферзь

for knight_pos in [(V, g), (V + 1, g + 2), (V + 2, g + 1), (V + 2, g - 1),

(V + 1, g - 2), (V - 1, g - 2), (V - 2, g - 1), (V - 2, g + 1),

(V - 1, g + 2)]:

if can_move_safely(knight_pos, (v2, g2)):

print("Конь на", knight_pos, "может пойти безопасно")

break

else:

print("Конь не может пойти безопасно")

if can_move_safely((V, g), (v2, g2)):

print("Ферзь на", (V, g), "может пойти безопасно")

else:

print("Ферзь не может пойти безопасно")

# Вариант м): конь и слон

for knight_pos in [(V, g), (V +

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