Aquí hay un rompecabezas de programación para ti:
Dada una lista de pares de cadenas y números correspondientes, por ejemplo [[A,37],[B,27],[C,21],[D,11],[E,10],[F,9],[G,3],[H,2]]
, genera otra lista que tendrá solo las cadenas de la siguiente manera:
El recuento total de cualquier cadena debe ser exactamente igual a su número correspondiente en los datos de entrada.
No se debe repetir ninguna cadena adyacente en la secuencia, y cada cadena debe aparecer en la lista de salida.
La selección de la siguiente cadena debe hacerse al azar siempre que no rompan por encima de dos reglas. Cada solución debe tener una probabilidad distinta de cero de ser elegida.
Si no es posible una combinación, la salida debería ser justa
0
.
La lista de entrada se puede dar en cualquier orden (ordenada o no), y las cadenas de la lista pueden tener cualquier longitud.
Salida de muestra para la entrada de muestra anterior 1
[A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,G,H,G,H,G]
Muestra de entrada 2:
[[A,6],[B,1],[C,1]]
Salida para la segunda entrada:
0
ya que no es posible una lista basada en reglas.
Entrada de muestra 3:
[[AC,3],[BD,2]]
salida válida: [AC,BD,AC,BD,AC]
salida inválida: [AC,BD,AC,AC,BD]
Si necesita más aclaraciones, no dude en informarme en los comentarios y actuaré de inmediato.
Este es el código de golf , por lo que gana el código más corto en bytes para cada idioma.