Условие

Известно, что на доске 8×8 можно расставить 8 ферзей так, чтобы они не били друг друга. Вам дана расстановка 8 ферзей на доске, определите, есть ли среди них пара бьющих друг друга.

Программа получает на вход восемь пар чисел, каждое число от 1 до 8 — координаты 8 ферзей. Если ферзи не бьют друг друга, выведите слово NO, иначе выведите YES.

Решение задачи от разработчиков на Python:

Copy to Clipboard

Другая реализация задачи на Python:

Copy to Clipboard

Смотреть видео — Задача «Ферзи» решение на Python

Делитесь с друзьями ссылкой на ответ и задавайте вопросы в комментариях! 👇

5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Вячеслав
Вячеслав
1 год назад

спасибо

Pavel
Pavel
1 месяц назад

Сделал без необходимости перебора всех элементов, если будет найдены пересекающиеся ферзи цикл будет прерван сразу.
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)

Последний раз редактировалось 1 месяц назад Pavel ем