Неверно отрабатывает код при тестировании. Задача о шахматной доске и ладье (со Stepik)
Проблема: Неверно отрабатывает мой код. Прошу помочь - почему решение не верное? Где я ошибаюсь?
Задача со степика (Stepik):
"Даны две различные клетки шахматной доски. Напишите программу, которая определяет, может ли ладья попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки. Программа должна вывести «YES», если из первой клетки ходом ладьи можно попасть во вторую, или «NO» в противном случае."
Пример теста, который не проходит: координаты клетки 1: 2 1 координаты клетки 2: 1 1. На выходе NO, а должно быть YES.
Комментарий к моему решению: Мой код проверяет входят ли вообще координаты в нужный диапазон. Проверка х_1 больше 1 одновременно с тем что х_1 меньше или равно х_2 одновременно с тем что у одинаковые. Я это сделал для того чтобы проверить что для того чтобы попасть в точку х_2;у_2 можно только по х. вторая проверка проверяет тоже самое только с у.
y_1 = int(input()) #столбец первой клетки
x_1 = int(input()) # строка первой клетки
y_2 = int(input()) # столбец второй клетки
x_2 = int(input()) # строка второй клетки
if (x_1 >= 1 and x_1 <= x_2 and y_1 == y_2) or (y_1 >= 1 and y_1 <=y_2 and x_1 == x_2):
print("YES")
else:
print("NO")
Ответы (2 шт):
У вас
x_1 <= x_2иy_1 <=y_2условия неверные. Вполне допустима первая клетка 8 8, а вторая 8 1, например.Раз уж есть проверка на
>= 1, то надо и на<= 8в этой логике.Лучше разделить проверку на правильность координат и на одинаковость, так как у вас нет ещё и проверки на вхождение числа в диапазон при равенстве (например, x1=x2=9 пройдет вашу проверку).
И проверка на совпадение первой и второй клетки желательна тогда.
Исходя из этого, я бы такое условие сделал для "YES":
if (1 <= x_1 <= 8 and 1 <= y_1 <= 8 and not (x_1 == x_2 and y_1 == y_2))\
and (y_1 == y_2 or x_1 == x_2):
попробуй
if x_1 == x_2 or y_1 == y_2:
print("YES")
в комментах к задаче есть схема как ходит ладья, все поле не надо проверять кстати, в следующей задаче у Антона Мельникова классное решение на форуме, мое любимое за весь курс