Vous dirigez un site Web politique et avez déterminé que les gens ont une meilleure compréhension intuitive lorsque la chance de gagner ou de perdre une élection est exprimée sous forme de ratio ("5 sur 7") que lorsqu'elle est exprimée en pourcentage ("71%"). ).
Mais vous ne voulez pas non plus afficher des rapports confus comme "58 en 82", vous souhaitez qu'ils soient plus faciles à comprendre, même s'ils ne sont pas aussi précis.
Donc, étant donné un pourcentage compris entre 0,1% et 99,9%, renvoyez le rapport "facile à comprendre" le plus proche " x en y ", en utilisant les règles suivantes :
- La plupart des valeurs (voir les exceptions ci-dessous) doivent renvoyer le rapport plus proche sur 10 ou moins . 55% devraient renvoyer "5 en 9", pas "11 en 20".
- Les ratios devraient être réduits à leur plus bas niveau . 65% devraient retourner "2 en 3", pas "4 en 6".
- Les valeurs inférieures à 10% devraient renvoyer le rapport le plus proche de la forme " 1 sur n " où n est l'un de (10,12,15,20,30,40,50,60,70,80,90,100) . Par exemple, 6% devraient renvoyer "1 sur 15".
- Les valeurs supérieures à 90% doivent renvoyer le rapport le plus proche de la forme " n-1 en n ", où n est l'un de (10,12,15,20,30,40,50,60,70,80,90,100) . Par exemple, 98,7% devraient renvoyer "79 en 80".
- Les valeurs inférieures à 1% doivent renvoyer " <1 sur 100 "
- Les valeurs supérieures à 99% devraient renvoyer " > 99 sur 100 "
Ou, pour y penser autrement, votre programme devrait renvoyer le rapport le plus proche des sorties possibles suivantes (j'ai inclus leurs valeurs approximatives pour votre commodité):
<1 in 100
1 in 100 = 1.00%
1 in 90 = 1.11%
1 in 80 = 1.25%
1 in 70 = 1.43%
1 in 60 = 1.67%
1 in 50 = 2.00%
1 in 40 = 2.50%
1 in 30 = 3.33%
1 in 20 = 5.00%
1 in 15 = 6.67%
1 in 12 = 8.33%
1 in 10 = 10.00%
1 in 9 = 11.11%
1 in 8 = 12.50%
1 in 7 = 14.29%
1 in 6 = 16.67%
1 in 5 = 20.00%
2 in 9 = 22.22%
1 in 4 = 25.00%
2 in 7 = 28.57%
3 in 10 = 30.00%
1 in 3 = 33.33%
3 in 8 = 37.50%
2 in 5 = 40.00%
3 in 7 = 42.86%
4 in 9 = 44.44%
1 in 2 = 50.00%
5 in 9 = 55.56%
4 in 7 = 57.14%
3 in 5 = 60.00%
5 in 8 = 62.50%
2 in 3 = 66.67%
7 in 10 = 70.00%
5 in 7 = 71.43%
3 in 4 = 75.00%
7 in 9 = 77.78%
4 in 5 = 80.00%
5 in 6 = 83.33%
6 in 7 = 85.71%
7 in 8 = 87.50%
8 in 9 = 88.89%
9 in 10 = 90.00%
11 in 12 = 91.67%
14 in 15 = 93.33%
19 in 20 = 95.00%
29 in 30 = 96.67%
39 in 40 = 97.50%
49 in 50 = 98.00%
59 in 60 = 98.33%
69 in 70 = 98.57%
79 in 80 = 98.75%
89 in 90 = 98.89%
99 in 100 = 99.00%
>99 in 100
Autres stipulations:
- L'entrée numérique peut être comprise entre 0,1 et 99,9 ou entre 0,001 et 0,999 , selon ce qui est le plus pratique. Vous devez gérer au moins 3 chiffres significatifs.
- Vous devez générer un rapport ("3 en 4"), pas l'équivalent fraction ("3/4").
- S'il y a deux ratios également proches de l'entrée, votre programme peut retourner l'un ou l'autre. 7,5% pourraient renvoyer «1 sur 12» ou «1 sur 15».
- Les espaces blancs en tête / arrière et / ou les nouvelles lignes sont très bien
Exemples :
Input : Output
0.5 : <1 in 100
1.0 : 1 in 100
1.5 : 1 in 70
7.5 : 1 in 15 or 1 in 12 (either is acceptable)
9.2 : 1 in 10
13.1 : 1 in 8
29.2 : 2 in 7
29.3 : 3 in 10
52.7 : 1 in 2
52.8 : 5 in 9
72.0 : 5 in 7
73.9 : 3 in 4
88.8 : 8 in 9
90.8 : 9 in 10
94.2 : 19 in 20
98.7 : 79 in 80
98.9 : 89 in 90
99.0 : 99 in 100
99.1 : >99 in 100
Ceci est un code-golf défi de , le code le plus court dans chaque langue gagne.
(Similaire à, mais pas en double: convertir une décimale en fraction , fraction la plus proche , nombre à virgule flottante approximatif avec une précision à n chiffres )
If there are two ratios equally close to the input, your program can return either one. 7.5% could return "1 in 12" or "1 in 15"
Est-ce à dire que nous pouvons également revenir7 in 100
? Btw,1 in 14
est plus proche de l'entrée dans ce cas.