スキトルズのバッグが渡されました。さまざまなフレーバーを最大限に活用するには、フレーバー間をローテーションする必要があることは誰もが知っています。
基本:
- 一度に食べることができるスキトルは1つだけです
- スキトルズを食べる順序は定期的でなければなりません。
- 各期間に特定のフレーバーを複数回含めることはできません。
- バッグには非常に多くのスキトルズしかありません。バッグに表示されている以上のスキトルの特定の味を食べることはできません。
- あなたはできるだけ多くのスキトルズを食べたい(それは常に可能ではないかもしれない)
例:
3つの赤、2つの青、3つの緑のスキトルズから始めてみましょう。
R B G R B G R G Invalid: The last R must be followed by a B, not a G
R B G R B G R Valid, but sub-optimal
R R R Valid, but sub-optimal
R G B R G B R G Valid and optimal
G R B G R B G R Also valid and optimal (there are multiple good solutions)
入出力
- カラーカウントの正の整数の空でないリストが渡されます。(上記の例は
[3,2,3])。 - 有効で最適な順序を含むリストを返す必要があります。
- 色を使用する代わりに、入力リストのインデックスを使用します。(上記の最後の出力例はになります
[2,0,1,2,0,1,2,0])。 - 出力には、0インデックスまたは1インデックスが付けられます。私の例は0からインデックス付けされます
テストケース
1 0
4 0 0 0 0
4 1 0 0 0 0
3 1 0 1 0 or 0 0 0
5 2 2 0 1 2 0 1 2 0
2 3 5 2 1 0 2 1 0 2 1 or 1 2 0 1 2 0 1 2
2 4 5 2 1 2 1 2 1 2 1 2
3 4 5 2 1 0 2 1 0 2 1 0 2 1 or 1 2 0 1 2 0 1 2 0 1 2
1 1 1 1 1 6 5 0 1 2 3 4 5 (lots of other solutions)
1 1 1 1 1 8 5 5 5 5 5 5 5 5
2 4 6 8 3 2 1 3 2 1 3 2 1 3 2 1 3 2
これはコードゴルフなので、お気に入りの言語でソリューションをできるだけ短くしてください。