Digamos que tu trabajo es pintar postes, y un cliente te pide que pintes un poste con 4 secciones rojas y 3 secciones amarillas. Puedes hacerlo fácilmente de la siguiente manera:
r y r y r y r
Con solo rayas amarillas y rojas. Ahora digamos que su cliente le pide que pinte un poste con 2 secciones rojas, 2 secciones amarillas y 1 sección verde . Hay un par de maneras en que puedes pintar tu poste
g y r y r
y g r y r
y r g y r
y r y g r
y r y r g
g r y r y
r g y r y
r y g r y
r y r g y
r y r y g
y r g r y
r y g y r
Más precisamente, eso es 12 maneras de pintar el poste. Esto explota más colores y secciones involucradas
Ahora, si su cliente dice que quiere 3 secciones rojas y 1 sección amarilla, no hay forma de pintar un poste así. Porque no importa cómo intente organizar las secciones, dos secciones rojas se tocarán, y cuando dos secciones rojas se toquen, se convertirán en una sola sección roja.
Y esa es más o menos nuestra única regla para pintar postes
Las secciones adyacentes pueden no ser del mismo color.
Tarea
Dada una lista de colores y secciones requeridas, muestre la cantidad de formas posibles de pintar un poste según lo solicitado. Puede representar colores de cualquier manera razonable (enteros, caracteres, cadenas), pero nunca se le darán más de 255 colores diferentes a la vez. Si lo desea, incluso puede elegir no tener los colores asignados a los nombres y simplemente tomar una lista de recuentos de secciones si eso es más fácil.
Casos de prueba
Estos son bastante difíciles de calcular a mano, especialmente a medida que se hacen más grandes. Si alguien tiene un caso de prueba sugerido, lo agregaré.
[4,3] -> 1
[2,2,1] -> 12
[3,1] -> 0
[8,3,2] -> 0
[2,2,1,1]-> 84
[1, 1, 1, 1, 2, 2, 2]
? Supongo que sí.