バックグラウンド
私は強力な磁石の列とそれらの間にたくさんの金属オブジェクトを持っています。磁石はどこに引っ張りますか?
入力
入力は負でない整数の配列で、少なくとも1つ含まれてい1
ます。任意の合理的な形式を使用できます。
0
配列のsは空のスペースを1
表し、sは固定磁石を表します。他のすべての数字は、磁石によって引っ張られる金属のオブジェクトです。すべてのオブジェクトは、最も近い磁石に向かって引っ張られ(タイがある場合、オブジェクトは右に引っ張られます)、磁石または別のオブジェクトに当たるまでその方向に移動します。最終的に、すべてのオブジェクトが磁石の周りに集まっています。オブジェクトの順序は保持されます。
出力
出力は、すべてのオブジェクトが可能な限り最も近い磁石に引き寄せられた配列です。入力と同じ形式にする必要があります。
例
配列を考える
[0,0,2,0,1,1,0,2,0,3,0,5,0,1,0]
左端2
は、2番目の磁石と同様に、最初の磁石のペアに向かって引っ張られ2
ます。3
4つのステップ離れて両方の方向に磁石を持っているので、それが右に引っ張られます。また5
、右に引っ張られ3
、磁石と磁石の間に入ります。正しい出力は
[0,0,0,2,1,1,2,0,0,0,0,3,5,1,0]
ルールとスコアリング
完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。
テストケース
[0,1,0] -> [0,1,0]
[1,0,2,0,0,1,0] -> [1,2,0,0,0,1,0]
[7,0,5,0,0,1,0] -> [0,0,0,7,5,1,0]
[1,0,3,0,1,0,3,0,1] -> [1,0,0,3,1,0,0,3,1]
[1,0,0,0,0,0,0,7,3] -> [1,7,3,0,0,0,0,0,0]
[1,2,3,4,5,6,7,8,9,10,11,0,0,0,1] -> [1,2,3,4,5,6,7,0,0,0,8,9,10,11,1]
[12,3,0,0,1,0,1,3,0,0,6,12,0,0,0,1] -> [0,0,12,3,1,0,1,3,6,0,0,0,0,0,12,1]
1
は良い考えです!