Escreva uma função (como placeAt
) que use uma matriz de números inteiros não negativos e um índice que seja um número inteiro não negativo. Ele deve colocar um 1 no índice fornecido, possivelmente alterando outras entradas por um ponto para desocupar esse ponto, com 0s para lugares vazios.
- Se a entrada no índice desejado for 0, preencha-a com 1.
- Caso contrário, procure o 0 mais próximo à esquerda do índice. Desloque as entradas um ponto à esquerda nesse 0 para liberar espaço e preencha o índice com 1.
- Se não houver 0 à esquerda, faça o mesmo indo para a direita.
- Se nenhum dos dois for possível (por exemplo, se não houver 0), retorne a matriz inalterada.
Os itens são indexados em 0. O nome da função pode ser o que você quiser.
Exemplos:
(As letras representam quaisquer valores inteiros positivos.)
[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 é um desafio de código de golfe. A entrada mais curta no final de 9 dias vence.
[0, 2, 0, 2] placeAt 3
, é legal produzir [2, 0, 2, 1]
? O código é necessário para realmente ser uma função chamada placeAt
? Observe que alguns idiomas não possuem exatamente funções. "Lançar uma exceção" também pode não se aplicar a alguns idiomas; Eu sugiro permitir uma saída indicando um erro.
[2, 0, 2, 1]
não é uma saída legal, pois você sempre deve mudar o menor número possível de elementos e pode nomear a função como desejar.
0
?