В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
vovadavydov56
vovadavydov56
13.06.2020 10:55 •  Информатика

Требуется определить, бьет ли ферзь, стоящий на клетке с указанными координатами (номер строки и номер столбца), фигуру, стоящую на другой указанной клетке. входные данные вводятся четыре числа: координаты ферзя и координаты другой фигуры. координаты - целые числа в интервале от 1 до 8. выходные данные требуетсявывести слово yes, если ферзь может побить фигуру за 1 ход, в противном случае вывести слово no на python'е

Показать ответ
Ответ:
Zabon
Zabon
05.10.2020 13:39
# 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')
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота