Условие
Известно, что на доске 8×8 можно расставить 8 ферзей так, чтобы они не били друг друга. Вам дана расстановка 8 ферзей на доске, определите, есть ли среди них пара бьющих друг друга.
Программа получает на вход восемь пар чисел, каждое число от 1 до 8 — координаты 8 ферзей. Если ферзи не бьют друг друга, выведите слово NO
, иначе выведите YES
.
Решение задачи от разработчиков на Python:
Copy to Clipboard
Другая реализация задачи на Python:
Copy to Clipboard
Смотреть видео — Задача «Ферзи» решение на Python
Делитесь с друзьями ссылкой на ответ и задавайте вопросы в комментариях! 👇
спасибо
Сделал без необходимости перебора всех элементов, если будет найдены пересекающиеся ферзи цикл будет прерван сразу.
k = 8
coord_list = []
answer = «»
for _ in range(k):
p = [int(s) for s in input().split()]
for elem in coord_list:
if (elem[0] == p[0] or elem[1] == p[1]): #checking for horizontal & vertical crossing
answer = ‘YES’
break
elif (elem[0] — p[0] == elem[1] — p[1]) or (elem[0] + elem[1] == p[0] + p[1]): #checking for diagonal crossing
answer = ‘YES’
break
if answer == ‘YES’:
break
else:
answer = ‘NO’
coord_list.append(p) #appending element after loop for not cheching element itself
continue
print(answer)
Много текста