Introdução
Dado um conjunto de porcentagens de opções em uma pesquisa, calcule o número mínimo de eleitores que deve haver na pesquisa para gerar essas estatísticas.
Exemplo: Qual é o seu animal de estimação favorito?
- Cachorro:
44.4%
- Gato:
44.4%
- Rato:
11.1%
Resultado: 9
(número mínimo possível de eleitores)
Especificações
Aqui estão os requisitos para o seu programa / função:
- Você recebe uma matriz de valores percentuais como entrada (em stdin, como argumento de função, etc.)
- Cada valor percentual é um número arredondado para uma casa decimal (por exemplo,
44.4 44.4 11.1
). - Calcule o número mínimo possível de votantes na enquete cujos resultados renderiam essas porcentagens exatas quando arredondados para uma casa decimal (em stdout ou valor de retorno da função).
- Bônus : -15 caracteres, se você puder resolver de uma maneira "não trivial" (ou seja, não envolve a iteração de todos os números possíveis de eleitores até encontrar o primeiro que funcione)
Exemplo
>./pollreverse 44.4 44.4 11.1
9
>./pollreverse 26.7 53.3 20.0
15
>./pollreverse 48.4 13.7 21.6 6.5 9.8
153
>./pollreverse 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 99.6
2000
>./pollreverse 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 98.7
667
>./pollreverse 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 98.7
2000
>./pollreverse 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 97.8
401
Pontuação
Isso é código-golfe, então os personagens mais curtos possíveis vencem. Quaisquer bônus são subtraídos da contagem total de caracteres.
0.5%
o total, e toda vez que há um arredondamento, você soma 0.5%
o total. Os últimos quatro casos de teste foram construídos propositadamente para explorar esse fenômeno de maneira otimizada. No primeiro caso de teste que resulta em 2000
, cada uma das 9 primeiras entradas representa 1
voto (e todas são arredondadas para cima 0.5%
), enquanto a última representa 1991
votos (e é arredondada para baixo ~ 0.5%
). Se você calcular essas porcentagens manualmente e arredondar para uma casa decimal, verá que todas estão corretas.
26.7 53.3 20.0
(4 8 3 de 15),48.4 13.7 21.6 6.5 9.8
(74 21 33 10 15 de 153) etc.