Mancala est le nom d'une famille de jeux de société qui impliquent généralement une série de tasses remplies de perles que les joueurs manipulent. Ce défi utilisera un ensemble de règles spécifiques pour une variante solitaire du jeu.
Le plateau se compose d'un "panier" à une extrémité, suivi d'un nombre infini de tasses, numérotées à partir de 1. Certaines tasses contiennent un certain nombre de perles. Si la n
troisième tasse contient exactement des n
perles, vous pouvez en "semer" les perles. Semer signifie retirer toutes les n
billes de la tasse, puis les déposer une par une dans chaque tasse en direction du panier. La dernière perle ira dans le panier. Le joueur gagne lorsque toutes les billes du plateau sont dans le panier.
De toute évidence, il existe de nombreuses planches qui ne peuvent pas être gagnées, comme s'il y a exactement une perle dans la deuxième tasse. Il n'y a pas de jeux légaux car toutes les tasses avec 0 perles ne peuvent pas être semées, et la deuxième tasse n'a pas assez de perles pour être semées. Ce n'est évidemment pas amusant, donc votre tâche sera de créer des planches gagnables.
Tâche
Étant donné un entier positif représentant un certain nombre de billes, une liste d'entiers non négatifs représentant le nombre de billes qui devraient être placées dans chaque tasse pour faire une planche gagnable, comme décrit ci-dessus. Cette liste ne doit pas contenir de zéros de fin.
Pour un nombre donné de billes, il y a toujours exactement une configuration de carte gagnable.
Manifestation
Ceci est une démonstration de la façon de jouer la carte gagnable pour et l'entrée de 4. La carte gagnable est [0, 1, 3]
. Nous commençons par le seul mouvement disponible, semant les perles de la troisième tasse pour l'obtenir [1, 2, 0]
. Maintenant , nous avons en fait un choix, mais le seul correct on sème la première coupe, obtenir: [0, 2, 0]
. Ensuite, nous semons la deuxième tasse en donnant [1, 0, 0]
et finalement nous semons à nouveau la première tasse pour obtenir toutes les tasses vides.
Cas de test:
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]
Un grand merci à PeterTaylor pour avoir proposé un programme pour générer des cas de test!