Скажімо, ваша робота - фарбувати стовпи, а клієнт просить вас пофарбувати полюс з 4 червоними секціями та 3 жовтими секціями. Ви можете зробити це досить легко так:
r y r y r y r
З просто жовтими та червоними смужками. Тепер скажемо, що ваш клієнт просить вас намалювати полюс з 2 червоними секціями, 2 жовтими секціями та 1 зеленою секцією . Є кілька способів, як ви могли намалювати свій жердину
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
Точніше, це 12 способів пофарбувати полюс. Це вибухує більше кольорів та секцій, які задіяні
Тепер, якщо ваш клієнт каже, що вони хочуть 3 червоних секції та 1 жовту секцію, немає ніякого способу намалювати такий жерлик. Тому що, як би ви не намагалися впорядкувати секції, два червоні секції будуть торкатися, і коли два червоних секції торкаються, вони стають єдиним червоним.
І це майже наше одне правило для фарбування стовпів
Суміжні секції можуть бути не одного кольору
Завдання
Враховуючи список необхідних кольорів та ділянок, виведіть кількість можливих способів пофарбувати стовп, як вимагається. Ви можете представляти кольори будь-яким розумним способом (цілі числа, символи, рядки), але вам ніколи не буде надано більше 255 різних кольорів одночасно. Якщо ви хочете, ви навіть можете вибрати, щоб кольорам не було призначено імен, а просто взяти список підрахунків розділів, якщо це простіше.
Випробування
Це досить важко обчислити вручну, тим більше, що вони збільшуються. Якщо у когось є запропонований тестовий випадок, я додам його.
[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]
? Я теж так думаю.