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

    question img

Ответы 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 +

  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years