这是星期一早上的快速挑战...
用最少的字节数写一个函数或程序:
- 输入
[x,y]
坐标列表 - 输入
[x,y]
坐标各自质量的列表作为输入 - 以形式输出计算出的质心
[xBar,yBar]
。
注意:
- 输入可以采用任何形式,只要使用数组即可。
用简单的英语...
- 为了找到
xBar
,将每个质量乘以其相应的x坐标,对结果列表求和,然后将其除以所有质量的总和。 - 要找到
yBar
,将每个质量乘以其各自的y坐标,对结果列表求和,然后将其除以所有质量的总和。
简单的Python 2.7示例:
def center(coord, mass):
sumMass = float(reduce(lambda a, b: a+b, mass))
momentX = reduce(lambda m, x: m+x, (a*b for a, b in zip(mass, zip(*coord)[0])))
momentY = reduce(lambda m, y: m+y, (a*b for a, b in zip(mass, zip(*coord)[1])))
xBar = momentX / sumMass
yBar = momentY / sumMass
return [xBar, yBar]
测试用例:
> center([[0, 2], [3, 4], [0, 1], [1, 1]], [2, 6, 2, 10])
[1.4, 2.0]
> center([[3, 1], [0, 0], [1, 4]], [2, 4, 1])
[1.0, 0.8571428571428571]
这是代码高尔夫球,因此最少的字节数获胜!
[x,y,m],[x,y,m]...
?
[(x1,y1,m1), (x2,y2,m2)]
,例如元组列表?还是参数是元组,列表还是数组都没关系吗?那三个列表/数组呢?