この単純なチャレンジでは、L
負でない整数の入力配列と、b
0より大きく、の長さ以下のビンの数が与えられますL
。コードはM
、長さがb
で、配列をビニングした新しい配列を返す必要がありL
ます。これは例で簡単に説明できます。
L = [1,0,5,1]
をb = 2
返しますM = [1,6]
。
L = [0,3,7,2,5,1]
をb = 3
返しますM = [3,9,6]
。
これまでのところ、とても簡単です。ただし、この質問でb
は必ずしも分割する必要はありませんlen(L)
。この場合、最後のビンはそれを補うための数が少なくなります。
おそらく最後のビンを除く各ビンは、その合計に寄与する数と同じ数でなければなりません。最後のビンには、他のビンよりも多くの数字が含まれてはなりません。最後のビンには、他のルールに従って、できるだけ多くの数字が含まれている必要があります。
L = [0,3,7,2,5,1]
をb = 4
返しますM = [3,9,6,0]
。 M = [10,8,0,0]
3番目のビンにはビン1
ととして名前の番号が含まれていないため、出力は受け入れられません2
。
L = [0,3,7,2,5]
をb = 2
返しますM = [10,7]
。 M = [3, 14]
最後のビンには3
要素が含まれていますが、最初のビンには2
。
L = [1,1,1,1,1,1,1]
をb = 3
返しますM = [3,3,1]
。
最後のルールとして、コードは線形時間で実行する必要があります。
任意の言語またはライブラリを使用でき、便利な方法で入力が提供されると想定できます。
解決できない入力がいくつかあることがわかります。たとえば[1,1,1,1,1]
とb=4
。あなたのコードは、それらの入力に対して好きなものを出力できます。
your code must run in linear time
-私は自然にはかなり奇妙なこれに従わない任意のアルゴリズム見つけるだろう