Nehmen wir an, Sie müssen Stangen malen, und ein Kunde bittet Sie, eine Stange mit 4 roten und 3 gelben Abschnitten zu malen. Das geht ganz einfach wie folgt:
r y r y r y r
Mit nur gelben und roten Streifen. Angenommen, Ihr Kunde fordert Sie auf, einen Pfahl mit 2 roten, 2 gelben und 1 grünen Abschnitten zu malen . Es gibt verschiedene Möglichkeiten, wie Sie Ihre Stange bemalen können
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
Genauer gesagt, das sind 12 Möglichkeiten, den Mast zu bemalen. Dadurch werden mehr Farben und Bereiche in die Luft gesprengt
Wenn Ihr Kunde nun sagt, er möchte 3 rote und 1 gelbe Abschnitte, gibt es keine Möglichkeit, einen solchen Pfahl zu malen. Denn unabhängig davon, wie Sie die Abschnitte anordnen, berühren sich zwei rote Abschnitte, und wenn sich zwei rote Abschnitte berühren, werden sie zu einem einzigen roten Abschnitt.
Und das ist so ziemlich unsere einzige Regel für das Malen von Stangen
Benachbarte Abschnitte haben möglicherweise nicht dieselbe Farbe
Aufgabe
Ausgehend von einer Liste der erforderlichen Farben und Abschnitte geben Sie die Anzahl der möglichen Möglichkeiten zum Malen eines Pfostens nach Bedarf aus. Sie können Farben auf jede vernünftige Weise darstellen (Ganzzahlen, Zeichen, Zeichenfolgen), aber Sie werden niemals mehr als 255 verschiedene Farben gleichzeitig erhalten. Wenn Sie möchten, können Sie auch festlegen, dass die Farben nicht mit Namen versehen werden, und nur eine Liste der Abschnittszählungen erstellen, wenn dies einfacher ist.
Testfälle
Diese sind von Hand eher schwer zu berechnen, zumal sie größer werden. Wenn jemand einen vorgeschlagenen Testfall hat, füge ich ihn hinzu.
[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]
? Das nehme ich an.