Python

Помогите пожалуйста решить задачу "Ход конём" в Python.

Ход конём
В рамках разработки шахматного ИИ стоит новая задача. По заданным вещественным координатам коня и второй точки программа должна определить может ли конь ходить в эту точку. Используйте как можно меньше конструкций if и логических операторов. Обеспечьте контроль ввода.
Пример:
Введите местоположение коня:
0.071
0.118
Введите местоположение точки на доске:
0.213
0.068
Конь в клетке (0, 1). Точка в клетке (2, 0).
Да, конь может ходить в эту точку.
x1, y1 = float(input('Введите местоположение коня: \n')), float(input())
x2, y2 = float(input('Введите местоположение точки на доске: \n')), float(input())
if (int(10 * x1) - int(10 * x2)) * (int(10 * y1) - int(10 * y2)) in [-2, 2]:
~~print('Да')
else:
~~print('Нет')

Один if, одна логическая операция.
ВН
Владимир Новиков
98 879
Лучший ответ
Айтеке Би Мектебi Вот ЭТО "in [-2, 2]" они еще не проходили... :)
Айтеке Би Мектебi knight_pos_x = 0.071
knight_pos_y = 0.118
board_pos_x = 0.213
board_pos_y = 0.068

x = int(knight_pos_x * 10)
y = int(knight_pos_y * 10)
bx = int(board_pos_x * 10)
by = int(board_pos_y * 10)

print(f'Конь в клетке {x, y}. Точка в клетке {bx, by}')
if abs((x-bx) * (y-by)) == 2:
print('Можно')
else:
print('Нельзя')
Помогаю:

Для получения клеток:

x = float(input())
y = float(input())

print( int(x * 10), int(y * 10) )

Для возможности хода, должно выполниться условие:

abs(y1 - y2) == 2 and abs(x2 - x1) == 1

Или еще одно такое же наоборот, 2 для разницы `x` и 1 для `y`
Яша Васильев
Яша Васильев
62 360
Мидинбек Абдырайымов Спасибо, помогли
print('Задача 7. Ход конём')
while True:
print('Введите местоположение коня:')
x = float(input(' '))
y = float(input(' '))
xSquare = int(x * 10)
ySquare = int(y * 10)

print('Введите местоположение точки на доске:')
point_x = float(input(' '))
point_y = float(input(' '))
point_Square_X = int(point_x * 10)
point_Square_Y = int(point_y * 10)

if 0 <= xSquare <= 8 or 0 <= ySquare <= 8 or 0 <= point_Square_X <= 8 or 0 <= point_Square_Y <= 8:
print(f'Конь в клетке ({xSquare}, {ySquare}) Точка в клетке ({point_Square_X}, {point_Square_Y}).')
break
else:
print('Введите координаты повторно, таких не существует!')

dxy = abs(xSquare - point_Square_X) + abs(ySquare - point_Square_Y) == 3
if dxy:
print('Да, конь может ходить в эту точку.')
else:
print('Нет, конь не может ходить в эту точку.')
Михаил Лав
Михаил Лав
326
x = float(input('Введите местоположение коня x: '))
y = float(input('Введите местоположение коня y: '))
bx = float(input('Введите местоположение точки на доске x: '))
by = float(input('Введите местоположение точки на доске y: '))

xSquare = int(x * 10)
ySquare = int(y * 10)
bxSquare = int(bx * 10)
bySquare = int(by * 10)

print('Конь в клетке', (xSquare, ySquare), '.Точка в клетке', (bxSquare, bySquare),'.')
if abs((x-bx) * (y-by)) == 2:
print('Нет, конь не может ходить в эту точку.')
else:
print('Да, конь может ходить в эту точку.')
Medet Bazarbaev Вообще неверно, Может так конь ходить куда угодно