Решить задачу на языке Питон " Шахматный ферзь ходит по диагонали, горизонтали или вертикали. Даны две...

Тематика Информатика
Уровень 5 - 9 классы
Python шахматы ферзь алгоритмы программирование условия шахматная доска логика задачи на кодирование проверка ходов
0

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

avatar
задан 4 месяца назад

3 Ответа

0

Чтобы решить задачу, нужно определить, может ли ферзь переместиться с одной клетки на другую за один ход. Ферзь в шахматах может двигаться по горизонтали, вертикали и диагонали на любое количество клеток. Таким образом, ферзь может попасть из первой клетки во вторую, если выполняется одно из следующих условий:

  1. Клетки находятся на одной горизонтали (то есть имеют одинаковую строку).
  2. Клетки находятся на одной вертикали (то есть имеют одинаковый столбец).
  3. Клетки находятся на одной диагонали (разница между столбцами равна разнице между строками по модулю).

Для решения этой задачи на Python можно использовать следующий алгоритм:

  1. Прочитать четыре числа: x1, y1, x2, y2. Эти числа обозначают координаты двух клеток на шахматной доске.
  2. Проверить, выполняется ли одно из условий движения ферзя.
  3. Вывести "YES", если ферзь может попасть с первой клетки на вторую, или "NO" в противном случае.

Вот пример реализации этой задачи на языке Python:

def can_queen_move(x1, y1, x2, y2):
    # Проверяем, находятся ли клетки на одной горизонтали или вертикали
    if x1 == x2 or y1 == y2:
        return "YES"
    # Проверяем, находятся ли клетки на одной диагонали
    if abs(x1 - x2) == abs(y1 - y2):
        return "YES"
    # Если ни одно из условий не выполнено, ферзь не может переместиться
    return "NO"

# Чтение входных данных
x1, y1, x2, y2 = map(int, input().split())

# Выводим результат
print(can_queen_move(x1, y1, x2, y2))

Объяснение кода:

  • Чтение данных: map(int, input().split()) считывает четыре числа из ввода, разделенные пробелами, и преобразует их в тип int.

  • Проверка условий:

    • x1 == x2: проверка, находятся ли клетки на одной вертикали.
    • y1 == y2: проверка, находятся ли клетки на одной горизонтали.
    • abs(x1 - x2) == abs(y1 - y2): проверка, находятся ли клетки на одной диагонали. Мы используем абсолютное значение разностей, чтобы сравнить их, поскольку для диагонального движения разности между координатами должны быть одинаковыми.
  • Вывод результата: Если выполняется хотя бы одно из условий, выводится "YES", иначе — "NO".

avatar
ответил 4 месяца назад
0

x1, y1, x2, y2 = map(int, input().split())
if x1 == x2 or y1 == y2 or abs(x1 - x2) == abs(y1 - y2):
    print("YES")
else:
    print("NO")

avatar
ответил 4 месяца назад
0

Для решения этой задачи на языке Python, можно использовать следующий код:

x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())

if x1 == x2 or y1 == y2 or abs(x1 - x2) == abs(y1 - y2):
    print("YES")
else:
    print("NO")

В этом коде мы считываем четыре числа - координаты двух клеток шахматной доски. Затем мы проверяем, может ли ферзь попасть с первой клетки на вторую одним ходом. Если координаты x или y совпадают (то есть ферзь может ходить по горизонтали или вертикали) или разница между x и y равна (то есть ферзь может ходить по диагонали), то выводим "YES", иначе выводим "NO".

avatar
ответил 4 месяца назад

Ваш ответ

Вопросы по теме