TUZ_5-11. Захват максимального количества шашек на шахматной доске
5.11. Захват максимального количества шашек на шахматной доске
Среди настольных игр на шахматной доске n×n с черными и белыми полями широко известна игра в шашки.
Она предполагает взятие фигур противника. Игроки поочередно делают ходы, перемещая шашки на соседнее поле по диагонали, причем фигуры всегда должны оставаться на белых полях и не могут двигаться назад.
Если две фигуры разного цвета соседствуют по диагонали, то игрок, кому выпал черед делать следующий ход,
может перепрыгнуть через фигуру противника и взять ее, при условии что позади фигуры противника есть свободное белое поле. Если у игрока есть возможность взять фигуру противника, он должен это сделать, а если есть возможность последовательно взять несколько фигур, то игрок должен взять их все. Игрок, потерявший все фигуры, считается проигравшим.
Цель этого задания состоит в том, чтобы взять максимальное количество фигур противника за один ход.
Ход со взятием фигуры противника, находящейся по соседству на диагонали, может выполняться только в направлениях (1, 1), (1, –1), (–1, 1) и (–1, –1).
Ваша задача: написать функцию, которая принимает размер шахматной доски, координату фигуры,
выполняющей ход, и координаты фигур противника и возвращает количество фигур, взятых за один ход.
В табл. 5.11 показаны ожидаемые результаты для некоторых входных данных.
Таблица 5.11. Некоторые ожидаемые результаты для задачи определения максимального количества шашек на шахматной доске, которые можно взять из текущей позиции |
n, x, y, pieces |
Ожидаемый результат |
5, 1, 3
(2, 4), (2, 3), (2, 2), (1, 2), (3, 3), (1, 3) |
1 |
8, 0, 4
(2, 1), (3, 1), (1, 3), (4, 1), (1, 4) |
2 |
10, 4, 7
(2, 1), (9, 1), (2, 1), (6, 5) |
0 |