คุณเรียกใช้เว็บไซต์ทางการเมืองและระบุว่าผู้คนมีความเข้าใจที่เข้าใจง่ายกว่าเมื่อมีโอกาสชนะหรือแพ้การเลือกตั้งแสดงเป็นอัตราส่วน ("5 in 7") มากกว่าเมื่อแสดงเป็นเปอร์เซ็นต์ ("71%" )
แต่คุณไม่ต้องการแสดงอัตราส่วนที่ทำให้เกิดความสับสนเช่น "58 ใน 82" คุณต้องการให้พวกเขาเข้าใจได้ง่ายขึ้นแม้ว่าจะไม่แม่นยำ
ดังนั้นให้เปอร์เซ็นต์ระหว่าง 0.1% และ 99.9% ให้ส่งกลับอัตราส่วน "ง่ายต่อการเข้าใจ" ที่ใกล้เคียงที่สุด " x ใน y " โดยใช้กฎต่อไปนี้ :
- ค่ามากที่สุด (ดูข้อยกเว้นด้านล่าง) ควรกลับอัตราส่วนที่ใกล้เคียงที่สุดจาก 10 หรือลด 55% ควรกลับมา "5 in 9" ไม่ใช่ "11 in 20"
- อัตราส่วนควรจะลดลงถึงข้อตกลงต่ำสุดของพวกเขา 65% ควรกลับ "2 in 3" ไม่ใช่ "4 in 6"
- ค่าต่ำกว่า 10% ควรกลับอัตราส่วนใกล้เคียงที่สุดของรูปแบบ " 1 ใน n " ที่nเป็นหนึ่ง (10,12,15,20,30,40,50,60,70,80,90,100) ตัวอย่างเช่น 6% ควรกลับ "1 in 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 in 12" หรือ "1 in 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
เช่นกัน? Btw1 in 14
ใกล้เคียงกับอินพุตในกรณีนี้