Необходимо проверить может ли пара ферзей напасть друг на друга

Сначала мы с клавиатуры вводим число пар координат, потом вводим сами координаты и по этим координатам выставляем ферзей на шахматной доске. Задача в том, что если ферзь может бить другую, то возвращаем "YES", если нет "NO. У меня проблема с тем, что не получается проверка на "атаку" по диагонали. Нужна помощь или совет!

Вот мой ход мыслей (без инпутов):

arr = [
    [0, 0 ,0 ,0, 0, 0, 0, 0],
    [0, 0 ,0 ,0, 0, 0, 0, 0],
    [0, 0 ,0 ,0, 0, 0, 0, 0],
    [0, 0 ,0 ,0, 0, 0, 0, 0],
    [0, 0 ,0 ,0, 0, 0, 0, 0],
    [0, 0 ,0 ,0, 0, 0, 0, 0],
    [0, 0 ,0 ,0, 0, 0, 0, 0],
    [0, 0 ,0 ,0, 0, 0, 0, 0]
]


# for good vision
def show_arr(arr):
    for row in arr:
        print(''.join([f'{el:^4}' for el in row]))


#  placing our Queens by coordinates
def get_figure(arr, coords_list):
    for cord in coords_list:
        for ir, row in enumerate(range(8), start=1):
            for ic, col in enumerate(range(8), start=1):
                if ir == cord[0] and ic == cord[1]:
                    arr[row][col] = 'Q'
    return arr


def check(arr):
    s = 1
    for row in range(8):
        for col in range(8):
            if arr[row][col] == 'Q':
                if arr[row-s][col+s] == 'Q':
                    return 'YES'
                elif arr[row-s][col-s] == 'Q':
                    return 'YES'
                elif arr[row+s][col-s] == 'Q':
                    return 'YES'
                elif arr[row+s][col+s] == 'Q':
                    return 'YES'
                    s += 1
                    print(s)
    return 'NO'
        

if __name__ == '__main__':


    coords_list = [[1, 1], [3, 5], [7, 7]]

    show_arr(get_figure(arr, coords_list))

    print(check(get_figure(arr, coords_list)))

Ответы (1 шт):

Автор решения: nomnoms12

Достаточно проверить условие:

x1 - y1 == x2 - y2 or x1 + y1 == x2 + y2 or x1 == x2 or y1 == y2

Его несложно получить, если построить таблицу арифметических операций над координатами:

Операции над координатами Источник фото: stepik

Для клеток, лежащих на диагоналях матрицы параллельных главной, разности координат равны. А для клеток, лежащих на диагоналях матрицы параллельных вспомогательной, суммы координат равны.

→ Ссылка