要检查一列非负整数是否平衡,可以想象一下将各个权重放在板上,然后尝试将板平衡在枢轴上,以使枢轴左右的汇总相对权重相同。相对重量是通过将其重量乘以其到枢轴的距离得出的(请参见杠杆定律)。
(来源:维基百科)
该图像对应于一个列表[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
。该列表是平衡的,因为5
到枢轴的距离为20,而到枢轴100
的距离为1和5*20 = 100 = 100*1
。
例子
3 1 5 7
#########
^
在这种情况下,枢轴位于的正下方5
,3
具有距离2和1
且7
具有距离1。因此,枢轴的左侧和右侧的两边总计为7
(3*2 + 1*1
在左侧和7*1
右侧),因此列表[3, 1, 5, 7]
是平衡的。
但是请注意,枢轴不必放在列表元素之一的下面,而也可以放在两个列表元素之间:
6 3 1
#######
^
在这种情况下,距离变为0.5, 1.5, 2.5, ...
依此类推。此列表也是平衡的,因为6*0.5 = 3 = 3*0.5 + 1*1.5
。
枢轴只能放置在一个数字的正下方或两个数字之间的正中,而不能放置在两个数字之间的三分之二处。
任务
考虑到非负整数的列表,在任何合理的格式,输出truthy
如果列表可以值平衡和falsy
否则值。
您可以假定输入列表包含至少两个元素,并且至少一个元素为非零。
这是一个代码挑战,因此每种语言中字节数最少的答案将获胜。
真实的测试用例
[1, 0]
[3, 1, 5, 7]
[6, 3, 1]
[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
[10, 4, 3, 0, 2, 0, 5]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[7, 7, 7, 7]
虚假的测试用例
[1, 2]
[3, 6, 5, 1, 12]
[0, 0, 2, 0, 1, 0]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[6, 3, 2, 4, 0, 1, 2, 3]
[4, 0, 0, 2, 3, 5, 2, 0, 1, 2, 3, 0, 0, 1, 2, 4, 3, 1, 3, 0, 0, 2]
[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
在沙盒化过程中发现了许多相关的挑战: 数量是否均衡?,序列的均衡指数,平衡在跷跷板上一组权重,平衡话,我将翻倒?和哪里枢轴属于?
You can assume that the input list contains at least two elements and that at least one element is non-zero.