Para verificar se uma lista de números inteiros não negativos é balanceada , pode-se imaginar colocando os respectivos pesos em uma placa e, em seguida, tente equilibrar a placa em um pivô de modo que os pesos relativos resumidos à esquerda e à direita do pivô sejam os mesmos. O peso relativo é dado multiplicando o peso pela sua distância do pivô (consulte a lei da alavanca ).
(Fonte: wikipedia )
Esta imagem corresponde a uma lista [100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
. Essa lista é equilibrada porque 5
tem uma distância de 20 em relação ao pivô, a 100
distância de 1 e 5*20 = 100 = 100*1
.
Exemplos
3 1 5 7
#########
^
Neste caso, o pivô está diretamente sob a 5
, a 3
distância 2 tem eo 1
e 7
tem distância 1. Assim, ambos os lados esquerdo e direito da soma pivô até 7
( 3*2 + 1*1
à esquerda e 7*1
à direita) e, portanto, a lista [3, 1, 5, 7]
é equilibrado.
Observe, no entanto, que o pivô não precisa ser colocado em um dos elementos da lista, mas também pode ser colocado entre dois elementos da lista:
6 3 1
#######
^
Nesse caso, as distâncias se tornam 0.5, 1.5, 2.5, ...
e assim por diante. Esta lista também é equilibrada porque 6*0.5 = 3 = 3*0.5 + 1*1.5
.
O pivô só pode ser colocado exatamente abaixo de um número ou exatamente no meio entre dois números, e não, por exemplo, em dois terços entre dois números.
Tarefa
Dada uma lista de números inteiros não negativos em qualquer formato razoável, insira um truthy
valor se a lista puder ser equilibrada e um falsy
valor caso contrário.
Você pode supor que a lista de entrada contenha pelo menos dois elementos e que pelo menos um elemento seja diferente de zero.
Esse é um desafio do código-golfe , portanto, a resposta com a menor quantidade de bytes em cada idioma vence.
Truthy 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]
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]
Muitos desafios relacionados foram encontrados enquanto o desafio estava na caixa de areia : é um número equilibrado? , Índice de equilíbrio de uma sequência , Equilibrar um conjunto de pesos em uma gangorra , Balanceamento de palavras , vou inclinar? e Onde pertence o pivô?
You can assume that the input list contains at least two elements and that at least one element is non-zero.