Per verificare se un elenco di numeri interi non negativi è bilanciato , si può immaginare di mettere i rispettivi pesi su una tavola e quindi provare a bilanciare la tavola su un perno in modo tale che i pesi relativi riepilogati a sinistra e a destra del perno siano gli stessi. Il peso relativo viene dato moltiplicando il peso per la sua distanza dal perno (vedere la legge della leva ).
(Fonte: Wikipedia )
Questa immagine corrisponde a un elenco [100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
. Questo elenco è bilanciato perché 5
ha una distanza di 20 dal perno, 100
una distanza di 1 e 5*20 = 100 = 100*1
.
Esempi
3 1 5 7
#########
^
In questo caso il perno si trova direttamente sotto il 5
, il 3
ha distanza 2 e il 1
e 7
hanno distanza 1. Quindi entrambi i lati sinistro e destro del perno si sommano a 7
( 3*2 + 1*1
a sinistra ea 7*1
destra) e quindi l'elenco [3, 1, 5, 7]
è bilanciato.
Si noti, tuttavia, che il pivot non deve essere posizionato sotto uno degli elementi dell'elenco, ma potrebbe anche essere posizionato tra due elementi dell'elenco:
6 3 1
#######
^
In questo caso le distanze diventano 0.5, 1.5, 2.5, ...
e così via. Questo elenco è anche bilanciato perché 6*0.5 = 3 = 3*0.5 + 1*1.5
.
Il perno può essere posizionato esattamente esattamente al di sotto di un numero o esattamente al centro tra due numeri e non ad esempio a due terzi tra due numeri.
Compito
Dato un elenco di numeri interi non negativi in qualsiasi formato ragionevole, genera un truthy
valore se l'elenco può essere bilanciato e un falsy
valore in caso contrario.
Si può presumere che l'elenco di input contenga almeno due elementi e che almeno un elemento sia diverso da zero.
Questa è una sfida di code-golf , quindi vince la risposta con il minor numero di byte in ogni lingua.
Verità Testcases
[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]
Testals Falsy
[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]
Molte sfide correlate sono state trovate mentre questa sfida è stata inscatolata : è un numero equilibrato? , Indice di equilibrio di una sequenza , equilibrio una serie di pesi su un'altalena , Bilanciamento parole , Will ho ribaltarsi? e dove appartiene il perno?
You can assume that the input list contains at least two elements and that at least one element is non-zero.