Escreva uma função que inclua uma lista de números inteiros positivos e retorne uma lista de números inteiros aproximando a porcentagem do total para o número inteiro correspondente na mesma posição.
Todos os números inteiros na lista de retorno devem adicionar exatamente até 100. Você pode assumir que a soma dos números inteiros passados é maior que 0. Como você deseja arredondar ou truncar decimais, é com você, desde que qualquer número inteiro resultante retorne como porcentagem está desativado em não mais que 1 em qualquer direção.
p([1,0,2]) -> [33,0,67] or [34,0,66]
p([1000,1000]) -> [50,50]
p([1,1,2,4]) -> [12,12,25,51] or [13,12,25,50] or [12,13,25,50] or [12,12,26,50]
p([0,0,0,5,0]) -> [0,0,0,100,0]
Isso é código-golfe , então o código mais curto em bytes vence!
p([2,2,2,2,2,3])
. Tem muitas respostas legais possíveis, mas nem todas 2
podem ser mapeadas para o mesmo valor. Isso elimina muitos algoritmos excessivamente simples que funcionam em todos os casos de teste anteriores porque o arredondamento não é muito ruim.
p([1000,1000]) -> [49,51]
?