Para verificar si una lista de enteros no negativos está equilibrada , uno puede imaginar poner los respectivos pesos en un tablero y luego tratar de equilibrar el tablero en un pivote de modo que los pesos relativos resumidos a la izquierda y a la derecha del pivote sean los mismos. El peso relativo se da multiplicando el peso con su distancia al pivote (vea la ley de la palanca ).
(Fuente: wikipedia )
Esta imagen corresponde a una lista [100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
. Esta lista está equilibrada porque 5
tiene una distancia de 20 al pivote, 100
una distancia de 1 y 5*20 = 100 = 100*1
.
Ejemplos
3 1 5 7
#########
^
En este caso, el pivote está directamente debajo de 5
, 3
tiene la distancia 2 y el 1
y 7
tiene la distancia 1. Por lo tanto, ambos lados izquierdo y derecho del pivote se suman 7
( 3*2 + 1*1
a la izquierda y 7*1
a la derecha) y, por lo tanto, la lista [3, 1, 5, 7]
está equilibrada.
Sin embargo, tenga en cuenta que el pivote no tiene que colocarse debajo de uno de los elementos de la lista, sino que también puede ubicarse entre dos elementos de la lista:
6 3 1
#######
^
En este caso las distancias se vuelven 0.5, 1.5, 2.5, ...
y así sucesivamente. Esta lista también está equilibrada porque 6*0.5 = 3 = 3*0.5 + 1*1.5
.
El pivote solo se puede colocar exactamente debajo de un número o exactamente en el medio entre dos números, y no, por ejemplo, en dos tercios entre dos números.
Tarea
Dada una lista de enteros no negativos en cualquier formato razonable, generar un truthy
valor si la lista se puede equilibrar y un falsy
valor de lo contrario.
Puede suponer que la lista de entrada contiene al menos dos elementos y que al menos un elemento no es cero.
Este es un desafío de código de golf , por lo que gana la respuesta con la menor cantidad de bytes en cada idioma.
Casos de prueba de la verdad
[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]
Falsy Testcases
[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]
Se encontraron muchos desafíos relacionados mientras este desafío estaba encerrado : ¿Es un número equilibrado? , Índice de equilibrio de una secuencia , Equilibrar un conjunto de pesas en un balancín , Equilibrar palabras , ¿Me volcaré? y ¿A dónde pertenece el pivote?
You can assume that the input list contains at least two elements and that at least one element is non-zero.