Retirado desta pergunta no Stack Overflow. Agradecemos também a @miles e @Dada por sugerirem entradas de teste que abordam alguns casos de canto.
O desafio
Dada uma matriz de valores inteiros, remova todos os zeros que não são flanqueados por algum valor diferente de zero.
De maneira equivalente, uma entrada deve ser mantida se for diferente de zero ou se for um zero imediatamente próximo a um valor diferente de zero.
As entradas mantidas devem manter na saída a ordem em que estavam na entrada.
Exemplo
Dado
[2 0 4 -3 0 0 0 3 0 0 2 0 0]
os valores que devem ser removidos são marcados com um x
:
[2 0 4 -3 0 x 0 3 0 0 2 0 x]
e assim a saída deve ser
[2 0 4 -3 0 0 3 0 0 2 0]
Regras
A matriz de entrada pode estar vazia (e a saída também deve estar vazia).
Os formatos de entrada e saída são flexíveis, como de costume: matriz, lista, sequência ou qualquer coisa que seja razoável.
Código de golfe, o menor número possível.
Casos de teste
[2 0 4 -3 0 0 0 3 0 0 2 0 0] -> [2 0 4 -3 0 0 3 0 0 2 0]
[] -> []
[1] -> [1]
[4 3 8 5 -6] -> [4 3 8 5 -6]
[4 3 8 0 5 -6] -> [4 3 8 0 5 -6]
[0] -> []
[0 0] -> []
[0 0 0 0] -> []
[0 0 0 8 0 1 0 0] -> [0 8 0 1 0]
[-5 0 5] -> [-5 0 5]
[50 0] -> [50 0]
-0
?
[010 0 0 01 1]
?
_2
vez de-2
? Muitos idiomas usam esse formato.