Фон
У меня есть ряд мощных магнитов и куча металлических предметов между ними. Куда магниты их потянут?
вход
Ваш ввод представляет собой массив неотрицательных целых чисел, который будет содержать хотя бы одно 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- хорошая идея!