Решение задачи «Ход слона» на Python.

В инете есть несколько решений этой задачи, вот условия

Шахматный слон ходит по диагонали. Даны две различные клетки шахматной доски, определите, может ли слон попасть с первой клетки на вторую одним ходом.

решения зачастую включают в себя использование abs, т.е. взятие по модулю, и такое решение предлагают и в самом pythontutor.ru(по крайней мере так пишут в комментах). Дело в том что в самом pythontutor.ru к решению этой задачи еще не было упоминания взятия по модулю abs, так что по идее надо решать без этого. Кроме того, предлагаемые решения не дают вариантов если одна из координат отрицательная или равна нулю. Ниже более полное и понятное решение с помощью тех данных, которые были пройдены ранее.

# First point
a = int(input())
b = int(input())

# Second point
aa = int(input())
bb = int(input())

# subtraction
sub_a = a - aa
sub_b = b - bb

if a == b == aa == bb:
    print('The same point')
elif a <= 0 or b <= 0 or aa <= 0 or bb <= 0 or a > 8 or aa > 8 or b > 8 or bb > 8:
    print('Error')
elif sub_a == sub_b or -sub_a == sub_b or sub_a == -sub_b:
    print('Yes')
else:
    print('No')

Что бы избавится в условии от минусов, можно использовать не abs, а как указано в примере к занятию/уроку через присвоение значения переменной, если она меньше нуля. Реализовано в примере про решение задачи Ход коня здесь.

Leave a Reply 123