Фон
У мене є ряд потужних магнітів і купа металевих предметів між ними. Куди їх потягнуть магніти?
Вхідні дані
Ваш вхід - це масив невід’ємних цілих чисел, який буде містити принаймні одне 1. Ви можете використовувати будь-який розумний формат.
В 0s масиву представляє собою порожній простір, і 1s є фіксовані магніти. Всі інші числа - це металеві предмети, які тягнуть магнітами. Кожен предмет витягується до найближчого магніту (якщо є краватка, об’єкт витягується праворуч), і він рухається в тому напрямку, поки не потрапить на магніт або інший об’єкт. Врешті-решт, всі об’єкти зібралися навколо магнітів. Порядок об’єктів зберігається.
Вихідні дані
Ваш вихід - це масив, де кожен об'єкт був витягнутий якнайближче до найближчого магніту. Він повинен мати той самий формат, що і вхідний.
Приклад
Розглянемо масив
[0,0,2,0,1,1,0,2,0,3,0,5,0,1,0]
Найменше лівий 2тягнеться до першої пари магнітів, як і до другої 2. 3Має магніт чотири кроків в обох напрямках, тому він отримує потягнули вправо. 5Також отримує потягнув вправо, і вона йде між 3і магнітом. Правильний вихід
[0,0,0,2,1,1,2,0,0,0,0,3,5,1,0]
Правила та оцінка
Ви можете написати повну програму або функцію. Виграє найменший кількість байтів, а стандартні лазівки заборонені.
Тестові кейси
[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- хороша ідея!