Disons que votre travail consiste à peindre des poteaux, et un client vous demande de peindre un poteau avec 4 sections rouges et 3 sections jaunes. Vous pouvez le faire assez facilement comme suit:
r y r y r y r
Avec juste des rayures jaunes et rouges. Supposons maintenant que votre client vous demande de peindre un poteau avec 2 sections rouges, 2 sections jaunes et 1 section verte . Il y a deux façons de peindre votre poteau
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
Plus précisément, c'est 12 façons de peindre le poteau. Cela fait exploser le plus de couleurs et de sections impliquées
Maintenant, si votre client dit qu'il veut 3 sections rouges et 1 section jaune, il n'y a aucun moyen de peindre un poteau comme ça. Parce que peu importe comment vous essayez d'organiser les sections, deux sections rouges se toucheront et lorsque deux sections rouges se toucheront, elles deviendront une seule section rouge.
Et c'est à peu près notre seule règle pour peindre les poteaux
Les sections adjacentes peuvent ne pas être de la même couleur
Tâche
Étant donné une liste de couleurs et de sections requises, affichez le nombre de façons possibles de peindre un poteau comme demandé. Vous pouvez représenter les couleurs de toute manière raisonnable (entiers, caractères, chaînes), mais vous ne recevrez jamais plus de 255 couleurs différentes à la fois. Si vous le souhaitez, vous pouvez même choisir de ne pas attribuer de noms aux couleurs et simplement prendre une liste des sections si cela est plus facile.
Cas de test
Celles-ci sont assez difficiles à calculer à la main, d'autant plus qu'elles grossissent. Si quelqu'un a un cas de test suggéré, je l'ajouterai.
[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]
? Je suppose.