Ви керуєте політичним веб-сайтом і визначили, що люди краще розуміють, коли шанс на перемогу чи програш на виборах виражається у співвідношенні ("5 на 7"), ніж коли він виражається у відсотках ("71%" ).
Але ви також не хочете відображати заплутані співвідношення на зразок "58 на 82", ви хочете, щоб їх було легше зрозуміти, навіть якщо вони не такі точні.
Отже, даючи відсоток від 0,1% до 99,9%, поверніть найближче співвідношення "легко зрозуміти" " x in y ", використовуючи такі правила :
- Більшість значень (див. Винятки нижче) повинні повертати найближче співвідношення з 10 або нижче . 55% повинні повернути "5 на 9", а не "11 на 20".
- Коефіцієнти слід зменшити до найнижчих . 65% повинні повернути "2 в 3", а не "4 в 6".
- Значення під 10% повинні повернути найближче співвідношення форми " 1 в n ", де n є одним із (10,12,15,20,30,40,50,60,70,80,90,100) . Наприклад, 6% повинні повернути "1 на 15".
- Значення понад 90% повинні повернути найближче співвідношення форми " n-1 в n ", де n є одним із (10,12,15,20,30,40,50,60,70,80,90,100) . Наприклад, 98,7% повинні повернути "79 за 80".
- Значення під 1% мають повернути " <1 на 100 "
- Значення понад 99% повинні повернути " > 99 на 100 "
Або, подумавши про це іншим способом, ваша програма повинна повернути найближче співвідношення з наступних можливих результатів (я включив їх приблизні значення для вашої зручності):
<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
Інші умови:
- Числовий введення може знаходитися в діапазоні від 0,1 до 99,9 або в межах від 0,001 до 0,999 , що б зручніше. Ви повинні обробити принаймні 3 значущі цифри.
- Потрібно вивести співвідношення ("3 в 4"), а не еквівалентну дріб ("3/4").
- Якщо два співвідношення однаково близькі до вхідних, ваша програма може повернути будь-яке. 7,5% може повернути "1 на 12" або "1 на 15".
- Простий / простір білого простору та / або нові лінії добре
Приклади :
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
Це виклик з гольф-кодом , найкоротший код на кожній мові виграє.
(Аналогічно, але не дублікат: Перетворення десяткової у дріб , Найближчий дріб , Орієнтовний номер з плаваючою комою з n-знаковою точністю )
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"
Чи означає це, що ми також можемо повернутися7 in 100
? Btw,1 in 14
ближче до вводу в цьому випадку.