Манкала - это название семейства настольных игр, которые обычно включают в себя серию чашек, наполненных бусинками, которыми манипулируют игроки. Эта задача будет использовать определенный набор правил для варианта игры пасьянса.
Доска состоит из «корзины» на одном конце, за которой следует бесконечное количество чашек, пронумерованных, начиная с 1. В некоторых чашках будет определенное количество шариков. Если в n
чашке точно есть n
бусинки, вы можете «сеять» бусинки из нее. Посев означает вынуть все n
шарики из чашки, а затем положить их по одному в каждую чашку по направлению к корзине. Последняя бусинка уйдет в корзину. Игрок выигрывает, когда все бусины на доске находятся в корзине.
Ясно, что есть много досок, которые нельзя выиграть, например, если во второй чашке ровно один шарик. Нет законных игр, потому что все чашки с 0 бусами не могут быть посеяны, а вторая чашка не имеет достаточного количества бусин для посева. Это явно не весело, поэтому ваша задача будет создавать выигрышные доски.
задача
При наличии положительного целого числа, представляющего количество шариков, выведите список неотрицательных целых чисел, представляющих количество шариков, которое следует поместить в каждую чашку, чтобы сделать доску с выигрышными сторонами, как описано выше. Этот список не должен содержать никаких завершающих нулей.
Для любого заданного количества бусинок всегда существует ровно одна конфигурация выигрышной доски.
демонстрация
Это демонстрация того, как разыграть выигрышную доску и ввести 4. Выигрышная доска есть [0, 1, 3]
. Мы начинаем с единственного доступного хода, высевая бусы из третьей чашки, чтобы получить [1, 2, 0]
. Теперь у нас на самом деле есть выбор, но единственно правильная сеют первую чашку, получая: [0, 2, 0]
. Затем мы сеем вторую чашку [1, 0, 0]
и, наконец, снова сеем первую чашку, чтобы получить все пустые чашки.
Тестовые случаи:
1 => [1]
2 => [0, 2]
3 => [1, 2]
4 => [0, 1, 3]
5 => [1, 1, 3]
6 => [0, 0, 2, 4]
7 => [1, 0, 2, 4]
8 => [0, 2, 2, 4]
9 => [1, 2, 2, 4]
10 => [0, 1, 1, 3, 5]
11 => [1, 1, 1, 3, 5]
12 => [0, 0, 0, 2, 4, 6]
13 => [1, 0, 0, 2, 4, 6]
14 => [0, 2, 0, 2, 4, 6]
15 => [1, 2, 0, 2, 4, 6]
16 => [0, 1, 3, 2, 4, 6]
17 => [1, 1, 3, 2, 4, 6]
18 => [0, 0, 2, 1, 3, 5, 7]
19 => [1, 0, 2, 1, 3, 5, 7]
20 => [0, 2, 2, 1, 3, 5, 7]
Большое спасибо PeterTaylor за создание программы для генерации тестовых случаев!