Требуется определить, бьет ли ферзь, стоящий на клетке с указанными координатами (номер строки и номер столбца), фигуру, стоящую на другой указанной клетке.Входные данные Вводятся четыре числа: координаты ферзя и координаты другой фигуры. Координаты — целые числа в интервале от 1 до 8.Выходные данные Требуется вывести слово YES, если ферзь может побить фигуру за 1 ход, в противном случае вывести слово NOЗадача на python’е

Вопрос школьника по предмету Информатика

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

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

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

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

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

Ответ учителя по предмету Информатика

# 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’)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Похожие вопросы от пользователей