Bulgarian Solitaire est un jeu solo rendu populaire par Martin Gardner dans sa chronique mathématique de Scientific American .
Vous avez des N
cartes identiques, divisées en piles. Vous prenez une carte de chaque pile et formez une nouvelle pile avec les cartes retirées. Vous répétez ce processus jusqu'à ce que vous atteigniez un état que vous avez déjà vu et continuer ainsi répéterait la boucle.
Par exemple, disons que vous avez des 8
cartes, divisées en une pile de 5
et une pile de 3
. Nous écrivons les tailles de pile dans l' ordre décroissant: 5 3
. Voici une transcription du jeu:
5 3
4 2 2
3 3 1 1
4 2 2
Vous retirez d'abord une carte de chacune des deux piles, laissant des piles de 4
et 2
, et une pile nouvellement créée de 2
, donnant 4 2 2
. Dans l'étape suivante, ces diminutions sont 3 1 1
suivies d'un nouveau tas de 3
. Enfin, la dernière étape vide les piles de taille 1
et produit 4 2 2
ce qui est déjà apparu, alors on s'arrête.
Notez que la somme des tailles de pile reste la même.
Votre objectif est d'imprimer une telle transcription du jeu à partir d'une configuration de départ donnée. C'est le golf de code, donc le moins d'octets gagne.
Contribution
Une liste de nombres positifs par ordre décroissant représentant les tailles de pieux initiales. Prenez l'entrée via STDIN ou l'entrée de fonction. Vous pouvez utiliser n'importe quelle structure de type liste que vous souhaitez.
Vous n'obtenez pas le nombre total de cartes N
en entrée.
Production
Imprimez la séquence des tailles de pile que traverse le jeu Bulgarian Solitaire. Notez que l'impression est requise, pas de retour. Chaque étape doit être sa propre ligne.
Chaque ligne doit avoir une séquence de nombres positifs dans l'ordre décroissant sans aucun 0
. Vous pouvez avoir des séparateurs et des jetons de début et de fin (par exemple, [3, 3, 1, 1]
). Les numéros peuvent avoir plusieurs chiffres, ils doivent donc être séparés d'une manière ou d'une autre.
Imprimez les fractionnements de la taille des piles que vous voyez jusqu'à ce que la répétition soit incluse. Ainsi, la première ligne doit être l'entrée et la dernière ligne doit être une répétition d'une ligne précédente. Il ne devrait pas y avoir d'autres répétitions.
Cas de test
>> [1]
1
1
>> [2]
2
1 1
2
>> [1, 1, 1, 1, 1, 1, 1]
1 1 1 1 1 1 1
7
6 1
5 2
4 2 1
3 3 1
3 2 2
3 2 1 1
4 2 1
>> [5, 3]
5 3
4 2 2
3 3 1 1
4 2 2
>> [3, 2, 1]
3 2 1
3 2 1
>> [4, 4, 3, 2, 1]
4 4 3 2 1
5 3 3 2 1
5 4 2 2 1
5 4 3 1 1
5 4 3 2
4 4 3 2 1
v$input()$
parQ
. 2. Si vous stockez la liste par ordre décroissant, vous n'avez pas besoinN
du tout:W!}QYQ~Y]Q=Q_S+fTmtdQ]lQ;Q