Требуется определить, бьет ли ферзь, стоящий на клетке с указанными координатами (номер строки и номер столбца), фигуру, стоящую на другой указанной клетке. входные данные вводятся четыре числа: координаты ферзя и координаты другой фигуры. координаты - целые числа в интервале от 1 до 8. выходные данные требуетсявывести слово yes, если ферзь может побить фигуру за 1 ход, в противном случае вывести слово no на python'е
284
390
Ответы на вопрос:
#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 ()] if hits(*inp): print('yes') else: print('no')
Популярно: Информатика
-
dimas141013.07.2020 08:21
-
SawBilly19.10.2022 16:54
-
AENabatov23.11.2021 17:58
-
ТимурСилкин28.09.2021 07:22
-
Емина04.04.2023 20:12
-
mumin201302.09.2021 13:05
-
nataliarianna2902.04.2023 20:54
-
AnnaMillerNikitina11.02.2021 20:34
-
VortexYT15.01.2020 09:46
-
Kristinapermya25.09.2022 21:19