Um zu überprüfen, ob eine Liste nicht negativer Ganzzahlen ausgeglichen ist , kann man sich vorstellen, die entsprechenden Gewichte auf eine Tafel zu setzen und dann zu versuchen, die Tafel auf einem Pivot so auszugleichen, dass die zusammengefassten relativen Gewichte links und rechts vom Pivot gleich sind. Das relative Gewicht ergibt sich durch Multiplikation des Gewichts mit dem Abstand zum Drehpunkt (siehe Gesetz des Hebels ).
(Quelle: Wikipedia )
Dieses Bild entspricht einer Liste [100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
. Diese Liste ist ausgeglichen, da die 5
einen Abstand von 20 zum Drehpunkt hat, die 100
einen Abstand von 1 und 5*20 = 100 = 100*1
.
Beispiele
3 1 5 7
#########
^
In diesem Fall befindet sich der Pivot direkt unter dem 5
, der 3
Abstand 2 hat und der 1
und 7
Abstand 1. Also addieren sich beide Seiten links und rechts des Pivots 7
( 3*2 + 1*1
links und 7*1
rechts) und daher ist die Liste [3, 1, 5, 7]
ausgeglichen.
Beachten Sie jedoch, dass der Pivot nicht unter einem der Listenelemente platziert werden muss, sondern auch zwischen zwei Listenelementen platziert werden kann:
6 3 1
#######
^
In diesem Fall werden die Entfernungen 0.5, 1.5, 2.5, ...
und so weiter. Diese Liste ist auch deshalb ausgewogen 6*0.5 = 3 = 3*0.5 + 1*1.5
.
Der Drehpunkt kann nur genau unter einer Zahl oder genau in der Mitte zwischen zwei Zahlen platziert werden und nicht z. B. bei zwei Dritteln zwischen zwei Zahlen.
Aufgabe
Wenn Sie eine Liste nicht negativer Ganzzahlen in einem angemessenen Format haben, geben Sie einen truthy
Wert aus, wenn die Liste ausgeglichen werden kann, und einen anderen falsy
Wert.
Sie können davon ausgehen, dass die Eingabeliste mindestens zwei Elemente enthält und mindestens ein Element ungleich Null ist.
Dies ist eine Code-Golf- Herausforderung, daher gewinnt die Antwort mit der geringsten Anzahl von Bytes in jeder Sprache.
Wahrheits-Testfälle
[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]
Viele verwandte Herausforderungen wurden gefunden, während diese Herausforderung im Sandkasten lag : Ist es eine ausgeglichene Zahl? , Equilibrium Index einer Sequenz , Gleichgewicht ein Satz von Gewichten auf einer Wippe , Wörter Balancing , Will ich umkippen? und wohin gehört der Pivot?
You can assume that the input list contains at least two elements and that at least one element is non-zero.