背景
我有一排强力磁铁和一堆金属物体。磁铁会将磁铁拉到哪里?
输入值
您的输入是一个非负整数数组,其中将至少包含一个1
。您可以使用任何合理的格式。
0
数组的s表示空白,而1
s表示固定的磁体。所有其他数字都是金属物体,它们被磁铁拉动。每个对象都被拉向最近的磁铁(如果有领带,则该对象被拉到右侧),然后沿该方向行进,直到碰到磁铁或另一个对象。最后,所有物体都聚集在磁铁周围。对象的顺序被保留。
输出量
您的输出是一个数组,其中每个对象都被拉到尽可能靠近最近的磁铁的位置。它应该具有与输入相同的格式。
例
考虑数组
[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
是个好主意!