Tratto da questa domanda in Stack Overflow. Grazie anche a @miles e @Dada per aver suggerito input di test che risolvono alcuni casi angolari.
La sfida
Data una matrice di valori interi, rimuovere tutti gli zeri che non sono affiancati da un valore diverso da zero.
Equivalentemente, una voce dovrebbe essere mantenuta se è un valore diverso da zero o se è uno zero immediatamente vicino a un valore diverso da zero.
Le voci che vengono conservate dovrebbero mantenere nell'output l'ordine che avevano nell'input.
Esempio
Dato
[2 0 4 -3 0 0 0 3 0 0 2 0 0]
i valori che devono essere rimossi sono contrassegnati con un x
:
[2 0 4 -3 0 x 0 3 0 0 2 0 x]
e quindi l'output dovrebbe essere
[2 0 4 -3 0 0 3 0 0 2 0]
Regole
L'array di input potrebbe essere vuoto (e quindi anche l'output dovrebbe essere vuoto).
I formati di input e output sono flessibili come al solito: array, elenco, stringa o qualsiasi cosa sia ragionevole.
Codice golf, il meno migliore.
Casi test
[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
invece di-2
? Molte lingue usano quel formato.