Écrivez une fonction (telle que placeAt) qui prend un tableau d'entiers non négatifs et un index qui est un entier non négatif. Il devrait placer un 1 à l'indice donné, décalant éventuellement les autres entrées d'un endroit pour quitter cet endroit, avec 0 pour les espaces vides.
- Si l'entrée à l'index souhaité est 0, remplissez-la avec un 1.
- Sinon, recherchez le 0 le plus proche à gauche de l'index. Décalez les entrées d'une place vers la gauche pour faire de la place, puis remplissez l'index avec un 1.
- S'il n'y a pas de 0 à gauche, faites de même en allant à droite.
- Si aucun n'est possible (c'est-à-dire s'il n'y a pas de 0), retournez le tableau tel quel.
Les éléments sont indexés 0. Le nom de la fonction peut être tout ce que vous voulez.
Exemples:
(Les lettres représentent toutes les valeurs entières positives.)
[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
Il s'agit d'un défi de golf de code. L'entrée la plus courte au bout de 9 jours l'emporte.
[0, 2, 0, 2] placeAt 3, est-il légal de produire [2, 0, 2, 1]? Le code doit-il être réellement une fonction appelée placeAt? Notez que certaines langues n'ont pas exactement de fonctions. "Lancer une exception" peut également ne pas s'appliquer à certaines langues; Je suggère d'autoriser une sortie indiquant une erreur.
[2, 0, 2, 1]n'est pas une sortie légale, car vous devez toujours déplacer le moins d'éléments possible et vous pouvez nommer la fonction comme vous le souhaitez.

0?