Другая идея:
Сначала составьте список для каждого отдельного значения, то есть:
Red, Red, Red, Red, Red
Green, Green, Green
Blue, Blue, Blue
Yellow
Затем объедините их в один список, начиная с самого большого списка, так, чтобы появился новый элементдобавляется на каждой i-й позиции.Помните последнюю точку вставки, чтобы вы заполнили весь список, а не только начало, как в ответе Дэвида Гелхара.Увеличьте i, если вы достигнете конца:
Red, Red, Red, Red, Red // i = 1
Red, Green, Red, Green, Red, Green, Red, Red // i = 2
Red, Green, Red, Green, Red, Green, Red, Blue, Red // wrap-around, increment i
Red, Green, Blue, Red, Green, Blue, Red, Green, Red, Blue, Red // i = 3
Red, Green, Blue, Red, Green, Blue, Red, Green, Yellow, Red, Blue, Red // i = 3
Я не думаю, что это даст оптимальное решение, но оно может быть достаточно для ваших целей.