Diciamo che il tuo compito è quello di dipingere i pali e un cliente ti chiede di dipingere un palo con 4 sezioni rosse e 3 sezioni gialle. Puoi farlo abbastanza facilmente come segue:
r y r y r y r
Con solo strisce gialle e rosse. Ora supponiamo che il tuo cliente ti chieda di dipingere un palo con 2 sezioni rosse, 2 sezioni gialle e 1 sezione verde . Ci sono un paio di modi in cui potresti dipingere il tuo palo
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
Più precisamente sono 12 i modi per dipingere il palo. Questo fa esplodere più colori e sezioni sono coinvolti
Ora se il tuo cliente dice che vogliono 3 sezioni rosse e 1 sezione gialla non c'è modo di dipingere un palo del genere. Perché, indipendentemente dal modo in cui si tenta di disporre le sezioni, verranno toccate due sezioni rosse e, quando due sezioni rosse si toccano, diventano un'unica sezione rossa.
E questa è praticamente la nostra unica regola per dipingere i pali
Le sezioni adiacenti potrebbero non essere dello stesso colore
Compito
Dato un elenco di colori e sezioni richiesti, visualizza il numero di modi possibili per dipingere un palo come richiesto. Puoi rappresentare i colori in qualsiasi modo ragionevole (numeri interi, caratteri, stringhe), ma non ti verranno mai dati più di 255 colori diversi alla volta. Se lo desideri, puoi anche scegliere di non assegnare i colori ai nomi e prendere semplicemente un elenco di conteggi di sezione se è più facile.
Casi test
Questi sono piuttosto difficili da calcolare a mano, soprattutto quando diventano più grandi. Se qualcuno ha un caso di prova suggerito lo aggiungerò.
[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]
? Suppongo di sì.