Schreiben Sie eine Funktion (z. B. placeAt), die ein Array nicht negativer Ganzzahlen und einen Index, der eine nicht negative Ganzzahl ist, verwendet. Es sollte eine 1 am angegebenen Index platzieren und möglicherweise andere Einträge um einen Punkt verschieben, um diesen Punkt zu räumen, wobei Nullen für leere Punkte stehen.
- Wenn der Eintrag am gewünschten Index 0 ist, füllen Sie ihn mit einer 1.
- Suchen Sie andernfalls nach der nächsten 0 links vom Index. Verschieben Sie die Einträge um eine Stelle nach links in diese 0, um Platz zu schaffen, und füllen Sie dann den Index mit einer 1.
- Wenn links keine 0 steht, gehen Sie genauso nach rechts.
- Wenn beides nicht möglich ist (dh wenn es keine 0 gibt), geben Sie das Array unverändert zurück.
Die Elemente sind 0-indiziert. Der Funktionsname kann beliebig sein.
Beispiele:
(Buchstaben stehen für positive ganzzahlige Werte.)
[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
Dies ist eine Code-Golf-Herausforderung. Der kürzeste Eintrag am Ende von 9 Tagen gewinnt.
[0, 2, 0, 2] placeAt 3ist es legal ausgeben [2, 0, 2, 1]? Muss der Code tatsächlich eine aufgerufene Funktion sein placeAt? Beachten Sie, dass einige Sprachen nicht genau Funktionen haben. "Ausnahme auslösen" gilt möglicherweise auch nicht für einige Sprachen. Ich würde vorschlagen, eine Ausgabe zuzulassen, die auf einen Fehler hinweist.
[2, 0, 2, 1]ist auch keine legale Ausgabe, da Sie immer so wenige Elemente wie möglich verschieben sollten und die Funktion beliebig benennen können.

0?