磁吸阵列
背景 我有一排强力磁铁和一堆金属物体。磁铁会将磁铁拉到哪里? 输入值 您的输入是一个非负整数数组,其中将至少包含一个1。您可以使用任何合理的格式。 0数组的s表示空白,而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]