Pour vérifier si une liste d'entiers non négatifs est équilibrée , on peut imaginer mettre des poids respectifs sur une planche puis essayer d'équilibrer la planche sur un pivot de telle sorte que les poids relatifs résumés à gauche et à droite du pivot soient les mêmes. Le poids relatif est donné en multipliant le poids par sa distance au pivot (voir loi du levier ).
(Source: wikipedia )
Cette image correspond à une liste [100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
. Cette liste est équilibrée car la 5
distance de 20 au pivot, la 100
distance de 1 et 5*20 = 100 = 100*1
.
Exemples
3 1 5 7
#########
^
Dans ce cas, le pivot est directement sous le 5
, 3
a la distance 2 et le 1
et 7
a la distance 1. Donc, les deux côtés gauche et droit du pivot se résument à 7
( 3*2 + 1*1
à gauche et 7*1
à droite) et donc la liste [3, 1, 5, 7]
est équilibrée.
Notez, cependant, que le pivot ne doit pas être placé sous l'un des éléments de la liste, mais peut également être placé entre deux éléments de la liste:
6 3 1
#######
^
Dans ce cas, les distances deviennent 0.5, 1.5, 2.5, ...
et ainsi de suite. Cette liste est également équilibrée car 6*0.5 = 3 = 3*0.5 + 1*1.5
.
Le pivot ne peut être placé exactement en dessous d'un nombre ou exactement au milieu entre deux nombres, et non par exemple aux deux tiers entre deux nombres.
Tâche
Étant donné une liste d'entiers non négatifs dans n'importe quel format raisonnable, affichez une truthy
valeur si la liste peut être équilibrée et une falsy
valeur dans le cas contraire.
Vous pouvez supposer que la liste d'entrée contient au moins deux éléments et qu'au moins un élément est différent de zéro.
C'est un défi de code-golf , donc la réponse avec le moins d'octets dans chaque langue l'emporte.
Vrais tests
[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]
Valises de test de falsification
[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]
Beaucoup de défis connexes ont été trouvés alors que ce défi était en bac à sable : est-ce un nombre équilibré? , Index d'équilibre d'une séquence , Equilibrer un ensemble de poids sur une bascule , Mots d'équilibrage , Vais-je basculer? et où appartient le pivot?
You can assume that the input list contains at least two elements and that at least one element is non-zero.