placeAt非負の整数の配列と非負の整数のインデックスを取る関数(など)を記述します。与えられたインデックスに1を配置し、他のエントリを1スポットシフトしてそのスポットを空にする必要があります。0は空のスポットを表します。
- 目的のインデックスのエントリが0の場合は、1を入力します。
- それ以外の場合は、インデックスの左側で最も近い0を探します。エントリをその左に1スポット左にシフトしてスペースを確保し、インデックスを1で埋めます。
- 左側に0がない場合は、同じことを右に行ってください。
- どちらも可能でない場合(つまり、0がない場合)は、配列を変更せずに返します。
アイテムは0インデックスです。関数名は任意の名前にすることができます。
例:
(文字は正の整数値を表します。)
[a, b, 0, c, d, 0] placeAt 2 // output [a, b, 1, c, d, 0] place 2 is 0, just fill
[a, b, 0, c, d, 0] placeAt 3 // output [a, b, c, 1, d, 0] place 3 is filled, shift items left
[a, b, 0, c, d, 0] placeAt 0 // output [1, a, b, c, d, 0] place 0 is filled, can't shift left, shift items right
[a, b, 0, c, d, 0] placeAt 1 // output [a, 1, b, c, d, 0] place 1 is filled, can't shift left, shift items right
[0, a, b, 0, c, d, 0] placeAt 2 // output [a, b, 1, 0, c, d, 0] place 2 is filled, shift items left
[0, a, b, 0, c, d, 0] placeAt 4 // output [0, a, b, c, 1, d, 0] place 4 is filled, shift items left (notice you keep shifting up until a 0)
[0, 2, 0, 2] placeAt 3 // output [0, 2, 2, 1] place 3 is filled, shift items left
これはコードゴルフの挑戦です。9日の終わりに最短のエントリーが勝ちます。
[0, 2, 0, 2] placeAt 3、出力することは合法[2, 0, 2, 1]ですか?コードは実際に呼び出される関数である必要がありますplaceAtか?一部の言語には正確に関数がないことに注意してください。「例外をスローする」も一部の言語には適用されない場合があります。エラーを示す出力を許可することをお勧めします。
[2, 0, 2, 1]は正当な出力ではありません。可能な限り少ない要素をシフトする必要があるため、関数には任意の名前を付けることができます。

0ますか?