TUZ_5-07 Игра Вари
5.7 Игра Вари
Вари (оваре) – африканская настольная игра со множеством вариаций, самая популярная,
пожалуй, из семейства игр манкала (манкала - семейство настольных игр для двух игроков).
В игре используется игровая доска с двумя рядами лунок.
Игроки могут «засевать» и «захватывать» семена в лунках.
В этом задании дается доска с 2n лунками (домами).
Первый ряд с n лунками принадлежит первому игроку, а второй – второму.
Первоначально в каждой лунке находится определенное количество семян и их нужно собрать.
Если в лунке находятся 2 или 3 семени, то их можно захватить.
Рассмотрим раунд игры на примере.
Пусть дана доска board = [0, 2, 1, 2] и дом house = 1.
Нужно вывести массив, отражающий изменения после сбора семян.
- Первая фаза – сбор урожая и посев – начинается с позиции house + 1
и продолжается до индекса board [house] (т. е. выполняется столько шагов, сколько семян в лунке board [house + 1]). Значение board [house] обнуляется (из лунки извлекаются два зерна),
поэтому board = [0, 0, 1, 2]. Далее одно зерно засевается во второй элемент (напомню, что счет начинается с 0), поэтому board = [0, 0, 2, 2], и еще одно зерно засевается в третий элемент,
поэтому board = [0, 0, 2, 3]. Вторая и третья лунки содержат 2 и 3 зерна соответственно,
поэтому они захватываются.
В результате на выходе получается массив board = [0, 0, 0, 0] и игра завершается.
Ваша задача: написать функцию, которая принимает доску и возвращает массив,
показывающий изменения после сбора урожая и посева.
В табл. 5.7 показаны ожидаемые результаты для некоторых входных данных.
Таблица 5.7. Некоторые ожидаемые результаты для задачи определения состояния игровой доски в африканской игре вари |
Board, house |
Ожидаемый результат |
2, 1, 2, 0
1 |
2, 0, 0, 0 |
1, 4, 5, 6
1 |
2, 0, 7, 7 |
7, 7, 7, 68, 0, 1, 0
3 |
18, 18, 18, 0, 0, 1, 1 |
2, 0, 7, 7
1 |
2, 0, 7, 7 |