Escriba una función que tome una lista de enteros positivos y devuelva una lista de enteros que se aproxima al porcentaje del total para el entero correspondiente en la misma posición.
Todos los enteros en la lista de retorno deben sumar exactamente 100. Puede suponer que la suma de los enteros pasados es mayor que 0. La forma en que desea redondear o truncar decimales depende de usted siempre que cualquier entero resultante devuelto como un porcentaje está desactivado por no más de 1 en cualquier dirección.
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]
Este es el código de golf , por lo que gana el código más corto en bytes.
p([2,2,2,2,2,3]). Tiene muchas respuestas legales posibles, pero no todas 2pueden asignarse al mismo valor. Esto elimina muchos algoritmos demasiado simples que funcionan en todos los casos de prueba anteriores porque el redondeo no es tan malo.
p([1000,1000]) -> [49,51]?