• Требуется определить, бьет ли ферзь, стоящий на клетке с указанными координатами (номер строки и номер столбца), фигуру, стоящую на другой указанной клетке.

    Входные данные

    Вводятся четыре числа: координаты ферзя и координаты другой фигуры. Координаты - целые числа в интервале от 1 до 8.

    Выходные данные

    Требуется вывести слово YES, если ферзь может побить фигуру за 1 ход, в противном случае вывести слово NO
    Задача на python'е

Ответы 1

  • # coding: utf-8# Python 3.X'''Вводятся четыре числа:xa, ya: координаты ферзяxb, yb: координаты другой фигурыКоординаты - целые числав интервале от 1 до 8.Вывод - булево значение:сможет ли ферзь побить фигуруза 1 ход.'''def hits(xa, ya, xb, yb) -> bool:    '''    Проверка аргументов.    '''    args = (xa, ya, xb, yb)    if any([not 1 <= z <= 8 for z in args]):        raise ValueError("Неверные координаты!")    '''    На одной прямой.    '''    if xa == xb or ya == yb:        return True    '''    Северо-западная диагональ.    '''    x_nw, y_nw = xa, ya    while x_nw > 1 and y_nw > 1:        x_nw -= 1        y_nw -= 1        if x_nw == xb and y_nw == yb:            return True    '''    Юго-восточная диагональ.    '''     x_se, y_se = xa, ya    while x_se < 8 and y_se < 8:        x_se += 1        y_se += 1        if x_se == xb and y_se == yb:            return True    '''    Юго-западная диагональ.    '''     x_sw, y_sw = xa, ya    while x_sw > 1 and y_se < 8:        x_sw -= 1        y_sw += 1        if x_sw == xb and y_sw == yb:            return True    '''    Северо-восточная диагональ.    '''     x_ne, y_ne = xa, ya    while x_ne < 8 and y_se > 1:        x_ne += 1        y_ne -= 1        if x_ne == xb and y_ne == yb:            return True    return False # если не бьетinp = [int(x) for x in input().split()]if hits(*inp):    print('YES')else:    print('NO')
  • Добавить свой ответ

Войти через Google

или

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

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

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