2016-07-06 4 views
-1

Я пытался решить задачу по движению короля (шахматы). Я узнал, что король может двигаться только в том случае, если это координаты -1 <= x1-x2 and y1-y2 <= 1. Мой код:My if/else не работает правильно

x1 = int(input())    #cuurent x-position 
y1 = int(input())    #current y-position 
x2 = int(input())    #estimated x-position 
y2 = int(input())    #estimated y-position 
if -1 <= x1-x2 and y1-y2 <= 1: #king can move to the x2-y2 from x1-y1 
    print('YES') 
else:       #king can't move to the x2-y2 from x1-y1 
    print('NO') 

Я прекрасно все движется «Да» я мог найти работы, но он не работает с некоторыми движениями «нет», такие как:

x1 = 4 , y1 = 4, x2 = 2, y2 = 6 или x1 = 4, y1 = 4, x2 = 4, y2 = 6

. И я понятия не имею, почему: 4-4 = 0, но 4-6 = -2 и -2 меньше -1.

+0

2 is> = -1 и -2 <= 1; 0 > = -1 и -2 <= 1. Ты «НЕТ», это правда ... – Li357

ответ

4

Король может двигаться, если абсолютная разность между координатами меньше или равна 1.

Так, пишут:

if abs(x1-x2) <= 1 and abs(y1-y2) <= 1: #king can move to the x2-y2 from x1-y1 
    print('YES') 
else:       #king can't move to the x2-y2 from x1-y1 
    print('NO') 

Это происходит потому, что координаты вас из которых может быть больше/меньше, чем координаты, к которым вы переезжаете, но вы знаете, что они отличаются не более чем на 1.