Bulgarian Solitaire es un juego para un jugador popularizado por Martin Gardner en su columna matemática en Scientific American .
Tienes N
cartas idénticas, divididas en pilas. Toma una carta de cada pila y forma una nueva pila con las cartas retiradas. Repites este proceso hasta que alcances un estado que ya has visto y, por lo tanto, continuar repitiendo el ciclo.
Por ejemplo, supongamos que tiene 8
tarjetas, divididas en un montón de 5
y un montón de 3
. Escribimos los tamaños de pila en orden descendente: 5 3
. Aquí hay una transcripción del juego:
5 3
4 2 2
3 3 1 1
4 2 2
Primero quitas una carta de cada una de las dos pilas, dejando pilas de 4
y 2
, y una pila de 2
donaciones recién creada 4 2 2
. En el siguiente paso, estos disminuyen para 3 1 1
seguir con un nuevo montón de 3
. Finalmente, el último paso vacía las pilas de tamaño 1
y produce lo 4 2 2
que ya ha aparecido, así que nos detenemos.
Tenga en cuenta que la suma de los tamaños de pila permanece igual.
Su objetivo es imprimir una transcripción del juego desde una configuración inicial dada. Este es el código de golf, por lo que gana menos bytes.
Entrada
Una lista de números positivos en orden descendente que representa los tamaños de pila iniciales. Tomar entrada a través de STDIN o entrada de función. Puede usar cualquier estructura tipo lista que desee.
No obtienes el número total de tarjetas N
como entrada.
Salida
Imprime la secuencia de tamaños de pila que atraviesa el juego de Solitario búlgaro. Tenga en cuenta que se requiere imprimir, no regresar. Cada paso debe ser su propia línea.
Cada línea debe tener una secuencia de números positivos en orden descendente sin 0
's'. Puede tener separadores y tokens de inicio y fin (por ejemplo, [3, 3, 1, 1]
). Los números pueden tener varios dígitos, por lo que deben separarse de alguna manera.
Imprima las divisiones del tamaño de la pila que ve hasta e incluso llegando a repetir. Entonces, la primera línea debe ser la entrada, y la última línea debe ser una repetición de una línea anterior. No debería haber ninguna otra repetición.
Casos de prueba
>> [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()$
conQ
. 2. Si almacena la lista en orden decreciente, no necesitaN
nada:W!}QYQ~Y]Q=Q_S+fTmtdQ]lQ;Q