Python

Помогите решить (Python)

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

мой вариант решения
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
if (abs(x1 - y1) == 1) and (abs(x2 - y2) == 2):
print('YES')
elif (abs(x1 -y1) == 2) and (abs(x2 - y2) == 1):
print('YES')
else:
print('NO')
#end

9 из 13 правильно
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
dx = abs(x1 - x2)
dy = abs(y1 - y2)
if dx == 1 and dy == 2 or dx == 2 and dy == 1:
print('YES')
else:
print('NO')

-------------------
Эталонное решение с pythontutor
Александр Куриленко
Александр Куриленко
63
Лучший ответ
Павел Галкин Спасибо, выручил, а у тебя на задачу про шоколадку есть ответ?
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
diff = sorted( [abs(x1-x2), abs(y1-y2)] )
print( 'YES' if diff == [1,2] else 'NO' )
a = int(input())
b = int(input())
c = int(input())
d = int(input())

if (((a + b) - (c + d) == 1) or ((a + b) - (c + d) == -1) or ((a + b) - (c + d) == -3) or ((a + b) - (c + d) == 3)) and ((a != c and b != d) and ((a + b != c + d) and (a - b != c - d))):
print('YES')
else:
print('NO')
Эдмунд Ро
Эдмунд Ро
639
x1, y1, x2, y2 = [int(input()) for i in range(4)]
print('YES' if {abs(x2-x1), abs(y2-y1)} == {1, 2} else 'NO')
Андрей Винник Так ещё короче
x = int(input())
y = int(input())
x1 = int(input())
y1 = int(input())

if (x - x1 == 2 or x - x1 == -2) and (y - y1 == 1 or y - y1 == -1):
print("YES")
elif (y - y1 == 2 or y - y1 == -2) and (x - x1 == 1 or x - x1 == -1):
print("YES")
else: print("NO")
Эдмунд Ро твой код не рабочий
Евгений Сичкарь добавь отступы в принтах
a=int(input())
b=int(input())
c=int(input())
d=int(input())
dx=c-a
dy=d-b
if dx<0:
dx=-dx
if dy<0:
dy=-dy
if dx==2 and dy==1 or dx==1 and dy==2:
print("YES")
else:
print("NO")
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
if (x1 == x2 + 2 or x1 == x2 - 2) and (y1 == y2 - 1 or y1 == y2 + 1) or (x1 == x2 + 1 or x1 == x2 - 1) and (y1 == y2 - 2 or y1 == y2 + 2):
print("YES")
else:
print("NO")
Программа на C++ (для тех кому на C++ нужно), которая проверяет, может ли шахматный конь попасть с одной клетки на другую за один ход, может выглядеть следующим образом:
 #include   

#include



int main() {

int x1, y1, x2, y2;

std::cin >> x1 >> y1 >> x2 >> y2;



// Вычисляем разницу между координатами

int dx = std::abs(x2 - x1);

int dy = std::abs(y2 - y1);



// Проверяем условие хода коня

if ((dx == 1 && dy == 2) || (dx == 2 && dy == 1)) {

std::cout
 f = int(input())
y = int(input())
w = int(input())
q = int(input())
if f > 8 or y > 8 or w > 8 or q > 8:
print('Ошибка')
elif f
h1=int(input())
g1=int(input())
h2=int(input())
g2=int(input())
if (abs(g1-g2)==1 and abs(h1-h2)==2) or (abs(g1-g2)==2 and abs(h1-h2)==1):
print('YES')
else:
print('NO')
a = int(input())
b = int(input())
c = int(input())
d = int(input())
if (1<=a-c<=2 or 1<=c-a<=2) and (1<=b-d<=2 or 1<=d-b<=2) and (a+b!=c+d) and (a-b!=c-d):
print('Yes')
else:
print('No')

Такой вариант развития событий также вполне возможен. Все проверки на pitontutor прошел. Первый вариант кода,который был исправлен впоследствии на данный,также прошёл проверку,но ,подставив СВОИ значения,код выдал ложный ответ. Пришлось корректировать на данный. И да,без всяких abs))