sfondo
Ho una fila di potenti magneti e un mucchio di oggetti metallici tra di loro. Dove li tireranno i magneti?
Ingresso
Il tuo input è un array di numeri interi non negativi, che conterrà almeno uno 1
. Puoi usare qualsiasi formato ragionevole.
Le 0
s della matrice rappresentano lo spazio vuoto e le 1
s rappresentano i magneti fissi. Tutti gli altri numeri sono oggetti di metallo, che vengono tirati dai magneti. Ogni oggetto viene tirato verso il magnete più vicino (se c'è un pareggio, l'oggetto viene tirato a destra), e viaggia in quella direzione fino a quando non colpisce il magnete o un altro oggetto. Alla fine, tutti gli oggetti si sono raggruppati attorno ai magneti. L'ordine degli oggetti viene preservato.
Produzione
Il tuo output è l'array in cui ogni oggetto è stato tirato il più vicino possibile al magnete più vicino. Dovrebbe avere lo stesso formato dell'input.
Esempio
Considera l'array
[0,0,2,0,1,1,0,2,0,3,0,5,0,1,0]
L'estrema sinistra 2
viene tirata verso la prima coppia di magneti, così come la seconda 2
. Il 3
ha un magnete quattro passi in entrambe le direzioni, in modo che viene tirato verso destra. Anche 5
viene tirato a destra e va tra il 3
e il magnete. L'output corretto è
[0,0,0,2,1,1,2,0,0,0,0,3,5,1,0]
Regole e punteggio
È possibile scrivere un programma completo o una funzione. Vince il conteggio di byte più basso e non sono consentite scappatoie standard.
Casi test
[0,1,0] -> [0,1,0]
[1,0,2,0,0,1,0] -> [1,2,0,0,0,1,0]
[7,0,5,0,0,1,0] -> [0,0,0,7,5,1,0]
[1,0,3,0,1,0,3,0,1] -> [1,0,0,3,1,0,0,3,1]
[1,0,0,0,0,0,0,7,3] -> [1,7,3,0,0,0,0,0,0]
[1,2,3,4,5,6,7,8,9,10,11,0,0,0,1] -> [1,2,3,4,5,6,7,0,0,0,8,9,10,11,1]
[12,3,0,0,1,0,1,3,0,0,6,12,0,0,0,1] -> [0,0,12,3,1,0,1,3,6,0,0,0,0,0,12,1]
1
è una bella idea!