Aquí hay un desafío rápido el lunes por la mañana ...
Escriba una función o programa en el menor número de bytes que:
- Toma como entrada una lista de
[x,y]coordenadas - Toma como entrada una lista de las
[x,y]masas respectivas de las coordenadas. - Emite el centro de masa calculado en forma de
[xBar,yBar].
Nota:
- La entrada se puede tomar de cualquier forma, siempre que se use una matriz.
El centro de masa se puede calcular mediante la siguiente fórmula:

En inglés simple...
- Para encontrar
xBar, multiplique cada masa por su respectiva coordenada x, sume la lista resultante y divídala por la suma de todas las masas. - Para encontrar
yBar, multiplique cada masa por su respectiva coordenada y, sume la lista resultante y divídala por la suma de todas las masas.
Ejemplo trivial de 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]
Casos de prueba:
> 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]
Este es el código de golf, por lo que gana el menor número de bytes.
[x,y,m],[x,y,m]...:?
[(x1,y1,m1), (x2,y2,m2)], por ejemplo, una lista de tuplas? ¿O no importa si los argumentos son tuplas, listas o matrices? ¿Qué pasa con tres listas / matrices?

