Digamos que seu trabalho é pintar postes, e um cliente pede para você pintar um poste com 4 seções vermelhas e 3 seções amarelas. Você pode fazer isso com muita facilidade da seguinte maneira:
r y r y r y r
Com apenas listras amarelas e vermelhas. Agora, digamos que seu cliente solicite que você pinte um poste com 2 seções vermelhas, 2 seções amarelas e 1 seção verde . Existem algumas maneiras de pintar o seu 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
Mais precisamente, são 12 maneiras de pintar o poste. Isso explode mais cores e seções envolvidas
Agora, se o seu cliente disser que deseja 3 seções vermelhas e 1 seção amarela, não há como pintar um poste assim. Como não importa como você tenta organizar as seções, duas seções vermelhas tocarão e, quando duas seções vermelhas tocarem, elas se tornarão uma única seção vermelha.
E essa é praticamente a nossa única regra para pintar postes
Seções adjacentes podem não ser da mesma cor
Tarefa
Dada uma lista de cores e seções necessárias, imprima o número de maneiras possíveis de pintar um poste, conforme solicitado. Você pode representar cores de qualquer maneira razoável (números inteiros, caracteres, seqüências de caracteres), mas nunca receberá mais de 255 cores diferentes por vez. Se desejar, você pode optar por não atribuir nomes às cores e apenas fazer uma lista das contagens de seção, se isso for mais fácil.
Casos de teste
Eles são difíceis de calcular manualmente, principalmente à medida que aumentam. Se alguém tiver um caso de teste sugerido, eu o adicionarei.
[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]
? Eu suponho que sim.