/
IvanKhabarov
/
python
Обзор
Документация
Войти
/
IvanKhabarov
/
python
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Home_Task/HT_6/task5.py
55 строк
3 KB
Ivan-Khabarov
Добавлено ДЗ 6
20 сен 2024, 20:25
20 сен 2024, 20:25
f8022b2
Код
Авторство
О чём код?
# Задача 5. Модуль для проверки ферзей # Добавьте в пакет, созданный на семинаре шахматный модуль. Внутри него # напишите код, решающий задачу о 8 ферзях. Известно, что на доске 8×8 можно # расставить 8 ферзей так, чтобы они не били друг друга. Вам дана расстановка 8 # ферзей на доске, определите, есть ли среди них пара бьющих друг друга. # Программа получает на вход восемь пар чисел, каждое число от 1 до 8 - # координаты 8 ферзей. Если ферзи не бьют друг друга верните истину, а если бьют # - ложь. # Подсказка № 1 # Убедитесь, что ферзи не находятся в одной строке или столбце, так как это приведет к # их атаке друг на друга. Для проверки можно использовать координаты столбца и # строки каждого ферзя. # Подсказка № 2 # Ферзи, находящиеся на одной диагонали, также будут атаковать друг друга. Проверьте, # находятся ли ферзи на одной диагонали, используя разность между строками и # столбцами. # Подсказка № 3 # Напишите вспомогательную функцию внутри основной функции для проверки, # находится ли конкретная позиция под атакой других ферзей. Это улучшит читаемость # кода. # Подсказка № 4 # Убедитесь, что каждая из 8 позиций на доске уникальна по строкам и столбцам. Это # гарантирует, что нет двух ферзей в одной строке или столбце. from chess import * def generate_random_queens_placement(): """ Генерирует случайную расстановку 8 ферзей. Возвращает: Список из 8 кортежей, каждый из которых содержит случайные координаты ферзя """ from random import randint return [(i, randint(1, 8)) for i in range(8)] def find_valid_placements(num_placements=4): valid_placements = [] while len(valid_placements) < num_placements: placement = generate_random_queens_placement() if are_queens_safe(placement): valid_placements.append(placement) return valid_placements def print_valid_placements(num_placements=4): valid_placements = find_valid_placements(num_placements) for placement in valid_placements: print(placement)