Mancala - це назва сімейства настільних ігор, які зазвичай включають в себе серії чашок, наповнених намистинами, якими гравці маніпулюють. У цьому виклику буде використано специфічне правило для пасьянсового варіанту гри.
Дошка складається з «кошика» на одному кінці, за яким слідує нескінченна кількість чашок, пронумерованих починаючи з 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 за те, що він створив програму для генерації тестових випадків!