आप कोई राजनीतिक वेबसाइट चलाने , और निर्धारित किया है कि एक बेहतर सहज ज्ञान युक्त समझ है लोग जब जीत या एक चुनावी खोने का मौका एक के रूप में व्यक्त किया जाता है अनुपात ( "7 में 5") जब यह एक के रूप में व्यक्त किया जाता है की तुलना में प्रतिशत ( "71%" )।
लेकिन आप "82 में 58" जैसे भ्रामक अनुपात प्रदर्शित नहीं करना चाहते हैं, आप उन्हें अधिक आसानी से समझना चाहेंगे, भले ही वे बहुत सटीक न हों।
इसलिए, 0.1% और 99.9% के बीच एक प्रतिशत दिया गया है , निम्नलिखित नियमों का उपयोग करते हुए निकटतम "आसानी से समझने वाला" अनुपात " x in y " लौटाएं :
- अधिकांश मान (नीचे अपवाद देखें) 10 या उससे कम के निकटतम अनुपात को वापस करना चाहिए । 55% को "9 में 5" लौटना चाहिए, न कि "20 में 11"।
- अनुपात को उनकी न्यूनतम शर्तों तक कम किया जाना चाहिए । 65% को "2 इन 3" लौटना चाहिए, न कि "4 इन 6"।
- 10% से कम के मानों को " 1 एन में " फॉर्म का निकटतम अनुपात वापस करना चाहिए, जहां एन (10,12,15,20,30,40,50,60,70,80,90,100) में से एक है । उदाहरण के लिए, 6% को "15 में 1" वापस करना चाहिए।
- 90% से अधिक के मानों को " n-1 in n " फॉर्म का निकटतम अनुपात वापस करना चाहिए, जहां n (10,12,15,20,30,40,50,60,80,80,90,100) में से एक है । उदाहरण के लिए, 98.7% को "80 में 79" वापस करना चाहिए।
- 1% से कम मान चाहिए " <100 में 1 "
- 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% "12 में 1" या "15 में 1" वापस कर सकता है।
- सफ़ेद स्थान और / या नई पंक्तियों का अनुगमन ठीक है
उदाहरण :
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
इस मामले में इनपुट के करीब है।