Статья Автор: Лебедев Дмитрий

TUZ_5-12. Количество безопасных полей для размещения дружественных фигур на шахматной доске

TUZ_5-12. Количество безопасных полей для размещения дружественных фигур на шахматной доске

TUZ_5-12. Количество безопасных полей для размещения дружественных фигур на шахматной доске
5.12. Количество безопасных полей для размещения дружественных фигур на шахматной доске
Едва ли можно найти человека, незнакомого с игрой в шахматы или хотя бы не слышавшего о ней.
Однако задумывались ли вы когда-нибудь над вопросом, как бы развивалась игра, если бы на доске присутствовали только ладьи?
Рассмотрим шахматную доску n×n с множеством ладей, принадлежащих двум игрокам. Ладьи могут перемещаться по горизонтали или вертикали на любое количество полей в пределах шахматной доски.
Ваша задача: написать функцию, которая принимает размер шахматной доски n и списки координат белых и черных ладей на доске и возвращает количество полей, в которых безопасно можно разместить другие белые фигуры.
В табл. 5.12 показаны ожидаемые результаты для некоторых входных данных.
Таблица 5.12. Некоторые ожидаемые результаты для задачи определения количества безопасных полей для размещения дружественных фигур на шахматной доске
n, friends, enemies Ожидаемый результат
22
(11, 7), (2, 4), (15, 7)
(10, 20), (18, 12)
397
9
(5, 5)
(2, 5), (1, 3)
52
4
(2, 2)
(2, 1)
10
7
(2, 2)
(2, 1), (6, 4), (6, 3)
22

Алгоритм
Принимает три входных параметра: целое число n, представляющее размер шахматной доски, список кортежей с координатами белых ладей на доске friends_rooks и список кортежей с координатами черных ладей на доске enemy_rooks – и возвращает целое число, представляющее количество полей на доске, на которых можно безопасно разместить белые фигуры.
На первом этапе создается доска с размерами n×n, все поля которой инициализируются нулями, обозначающими пустые поля. Затем на доске размещаются белые и черные фигуры, обозначаемые значения- ми 1 и –1 соответственно.
На следующем этапе проверяется безопасность каждого поля для белых фигур путем проверки окружающих его полей в горизонтальном и вертикальном направлениях. Если поле безопасно со всех этих направлений, т. е. если в этих направлениях нет черных фигур, или имеются белые фигуры, или они пустые, то оно считается безопасным. Для каждого встреченного безопасного поля переменная-счетчик safe_squares увеличивается на единицу.
Наконец, на последнем этапе функция возвращает safe_squares – количество полей, безопасных для размещения белых фигур.


Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать