Escriba una función (como placeAt
) que tome una matriz de enteros no negativos y un índice que sea un entero no negativo. Debería colocar un 1 en el índice dado, posiblemente desplazando otras entradas por un lugar para desocupar ese lugar, con 0 para espacios vacíos.
- Si la entrada en el índice deseado es 0, llénela con un 1.
- De lo contrario, busque el 0 más cercano a la izquierda del índice. Desplaza las entradas un lugar a la izquierda en ese 0 para hacer espacio, luego llena el índice con un 1.
- Si no hay 0 a la izquierda, haz lo mismo yendo a la derecha.
- Si ninguno de los dos es posible (es decir, si no hay 0), devuelva la matriz sin cambios.
Los artículos están indexados a 0. El nombre de la función puede ser lo que quieras.
Ejemplos:
(Las letras representan cualquier valor entero positivo).
[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
Este es un desafío de código de golf. La entrada más corta al final de 9 días gana.
[0, 2, 0, 2] placeAt 3
, ¿es legal la salida [2, 0, 2, 1]
? ¿Se requiere que el código sea realmente una función llamada placeAt
? Tenga en cuenta que algunos idiomas no tienen exactamente funciones. "Lanzar una excepción" también podría no aplicarse a algunos idiomas; Sugeriría permitir una salida que indique un error.
[2, 0, 2, 1]
no es una salida legal, ya que siempre debe cambiar la menor cantidad de elementos posible, y puede nombrar la función como desee.
0
?