
Шахматный король ходит по горизонтали, вертикали и диагонали, но только на 1 клетку. Даны две
различные клетки шахматной доски, определите, может ли король попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки. Программа должна вывести YES, если из первой клетки ходом короля можно попасть во вторую или NO в противном случае. на питоне

Ответы на вопрос

import sys
BarrYes = 0;
# Клетка 'Куда ходить'
print('Обозначим клетку хода');
print('');
xColumnOpp = int(input('Введите номер столбца в рамках (1-8) : '));
xCellOpp = int(input('Введите номер клетки столбца в рамках (1-8) : '));
print('');
# Проверка на ошибки ввода чисел
print('Проверка на ошибки ввода входных чисел');
print('');
if xColumnOpp > 8:
print('Входные числа столбца введены неправильно');
sys.exit()
elif xColumnOpp < 1:
print('Входные числа столбца введены неправильно');
sys.exit()
else:
print ('Входные числа столбца введены правильно');
print ('Входные числа столбца успешно проверены');
print('');
if xCellOpp > 8:
print('Входные числа клеток столбца введены неправильно');
sys.exit()
elif xCellOpp < 1:
print('Входные числа клеток столбца введены неправильно');
sys.exit()
else:
print ('Входные числа клеток столбца введены правильно');
print ('Входные числа клеток столбца успешно проверены');
print('');
print('');
# Клетка 'Где стоит король'
print('Обозначим клетку состояния объекта "Король"');
print('');
xColumnKing = int(input('Введите номер столбца в рамках (1-8) : '));
xCellKing = int(input('Введите номер клетки столбца в рамках (1-8) : '));
# Проверка на ошибки ввода чисел
print('Проверка на ошибки ввода входных чисел состояния Короля');
print('');
if xColumnKing > 8:
print('Входные числа столбца введены неправильно');
sys.exit()
elif xColumnKing < 1:
print('Входные числа столбца введены неправильно');
sys.exit()
else:
print ('Входные числа столбца введены правильно');
print ('Входные числа столбца успешно проверены');
print('');
if xCellKing > 8:
print('Входные числа клеток столбца введены неправильно');
sys.exit()
elif xCellKing < 1:
print('Входные числа клеток столбца введены неправильно');
sys.exit()
else:
print ('Входные числа клеток столбца введены правильно');
print ('Входные числа клеток столбца успешно проверены');
print('');
print('');
print('Производится вычисление, подождите пожалуйста');
print('');
print('');
print('Ваш ответ готов!');
print('');
if xColumnOpp == xColumnKing + 1 or xColumnOpp == xColumnKing -1 or xColumnOpp == xColumnKing :
BarrYes += 1;
else :
BarrYes += 0;
if xCellOpp == xCellKing + 1 or xCellOpp == xCellKing -1 or xCellOpp == xCellKing :
BarrYes += 1;
else :
BarrYes += 0;
# Ответ
if BarrYes == 2:
print('YES');
else:
print('NO');
#маялся с этой фигнёй около 3-х часов, но не в пустую, всё работает. проверял на бумажке) спасибо за вопрос))



Для решения данной задачи мы можем проверить, может ли король попасть из одной клетки в другую за один ход. Для этого достаточно проверить, что разница между координатами по строкам и столбцам не превышает 1.
Вот пример реализации на Python:
pythondef can_king_reach(src_col, src_row, dest_col, dest_row):
# Проверка, что разница по строкам и столбцам не превышает 1
return abs(dest_col - src_col) <= 1 and abs(dest_row - src_row) <= 1
# Чтение входных данных
src_col, src_row, dest_col, dest_row = map(int, input().split())
# Проверка и вывод результата
if can_king_reach(src_col, src_row, dest_col, dest_row):
print("YES")
else:
print("NO")
Вызов этой функции с заданными координатами позволит определить, может ли король попасть из одной клетки в другую за один ход.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili