introduction
Étant donné un ensemble de pourcentages de choix dans un sondage, calculez le nombre minimum d'électeurs qu'il doit y avoir dans le sondage pour générer ces statistiques.
Exemple: Quel est votre animal préféré?
- Chien:
44.4%
- Chat:
44.4%
- Souris:
11.1%
Sortie: 9
(nombre minimum d'électeurs possible)
Spécifications
Voici les exigences de votre programme / fonction:
- Vous disposez d'un tableau de valeurs de pourcentage en entrée (sur stdin, comme argument de fonction, etc.)
- Chaque pourcentage est un nombre arrondi à une décimale (par exemple,
44.4 44.4 11.1
). - Calculez le nombre minimum possible d'électeurs dans le sondage dont les résultats donneraient ces pourcentages exacts lorsqu'ils sont arrondis à une décimale (sur stdout ou valeur de retour de fonction).
- Bonus : -15 caractères si vous pouvez résoudre de manière "non triviale" (c'est-à-dire, n'implique pas d'itérer sur tous les # d'électeurs possibles jusqu'à ce que vous trouviez le premier qui fonctionne)
Exemple
>./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
Notation
Il s'agit de code-golf, donc les personnages les plus courts possibles gagnent. Tous les bonus sont encore soustraits du nombre total de personnages.
0.5%
du total, et chaque fois qu'il y a un arrondi vers le haut, vous ajoutez 0.5%
au total. Les quatre derniers cas de test ont été délibérément construits pour exploiter de manière optimale ce phénomène. Dans le premier cas de test qui en résulte 2000
, chacune des 9 premières entrées représente le 1
vote (et sont toutes arrondies 0.5%
), tandis que la dernière représente les 1991
votes (et est arrondie vers le bas ~ 0.5%
). Si vous calculez ces pourcentages manuellement et arrondissez à 1 décimale, vous verrez qu'ils sont tous corrects.
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.