tło
Mam między nimi rząd silnych magnesów i wiązkę metalowych przedmiotów. Gdzie przyciągną ich magnesy?
Wejście
Twoje dane wejściowe to tablica nieujemnych liczb całkowitych, która będzie zawierać co najmniej jedną 1. Możesz użyć dowolnego rozsądnego formatu.
Do 0S w tablicy oznaczają pustą przestrzeń, a 1y stanowią magnesy stałe. Wszystkie pozostałe liczby są metalowymi przedmiotami ciągniętymi przez magnesy. Każdy obiekt jest przyciągany w kierunku najbliższego magnesu (jeśli jest krawat, obiekt jest ciągnięty w prawo) i porusza się w tym kierunku, dopóki nie trafi w magnes lub inny przedmiot. W końcu wszystkie obiekty skupiły się wokół magnesów. Kolejność obiektów zostaje zachowana.
Wynik
Twój wynik to tablica, w której każdy obiekt został przyciągnięty tak blisko najbliższego magnesu, jak to możliwe. Powinien mieć ten sam format co dane wejściowe.
Przykład
Rozważ tablicę
[0,0,2,0,1,1,0,2,0,3,0,5,0,1,0]
Najbardziej wysunięty w lewo 2ciągnie się w kierunku pierwszej pary magnesów, podobnie jak druga 2. 3Posiada magnes czterech kroków w obu kierunkach, tak robi pociągnął w prawo. 5Również dostaje zjechał na prawo i przechodzi pomiędzy 3i magnesu. Prawidłowe wyjście to
[0,0,0,2,1,1,2,0,0,0,0,3,5,1,0]
Zasady i punktacja
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Przypadki testowe
[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]
1to fajny pomysł!