Bạn điều hành một trang web chính trị và đã xác định rằng mọi người có sự hiểu biết trực quan tốt hơn khi cơ hội giành chiến thắng hoặc thua cuộc bầu cử được biểu thị bằng tỷ lệ ("5 trong 7") so với khi nó được biểu thị bằng tỷ lệ phần trăm ("71%" ).
Nhưng bạn cũng không muốn hiển thị các tỷ lệ khó hiểu như "58 trong 82", bạn muốn chúng dễ hiểu hơn, ngay cả khi chúng không hoàn toàn chính xác.
Vì vậy, với tỷ lệ phần trăm từ 0,1% đến 99,9%, hãy trả về tỷ lệ "dễ hiểu" gần nhất " x trong y ", sử dụng các quy tắc sau :
- Hầu hết các giá trị (xem ngoại lệ bên dưới) sẽ trả về tỷ lệ gần nhất trong số 10 hoặc thấp hơn . 55% nên trả về "5 trong 9", chứ không phải "11 trong 20".
- Tỷ lệ nên được giảm đến các điều khoản thấp nhất của họ . 65% nên trả về "2 trong 3", chứ không phải "4 trong 6".
- Các giá trị dưới 10% sẽ trả về tỷ lệ gần nhất của mẫu " 1 trong n " trong đó n là một trong (10,12,15,20,30,40,50,60,70,80,90,100) . Ví dụ: 6% sẽ trả về "1 trong 15".
- Các giá trị trên 90% sẽ trả về tỷ lệ gần nhất của mẫu " n-1 in n " trong đó n là một trong (10,12,15,20,30,40,50,60,70,80,90,100) . Ví dụ: 98,7% sẽ trả về "79 trong 80".
- Các giá trị dưới 1% sẽ trả về " <1 trên 100 "
- Giá trị trên 99% sẽ trả về " > 99 trong 100 "
Hoặc, để suy nghĩ về nó theo cách khác, chương trình của bạn sẽ trả về tỷ lệ gần nhất từ các đầu ra có thể sau (Tôi đã bao gồm các giá trị gần đúng của chúng để thuận tiện cho bạn):
<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
Các quy định khác:
- Đầu vào số có thể nằm trong khoảng 0,1 đến 99,9 hoặc trong phạm vi 0,001 đến 0,999 , tùy theo điều kiện nào thuận tiện hơn. Bạn phải xử lý ít nhất 3 chữ số có nghĩa.
- Bạn phải xuất tỷ lệ ("3 trong 4"), không phải là tỷ lệ tương đương ("3/4").
- Nếu có hai tỷ lệ gần bằng với đầu vào, chương trình của bạn có thể trả về một tỷ lệ. 7,5% có thể trả về "1 trong 12" hoặc "1 trong 15".
- Khoảng trắng hàng đầu / dấu và / hoặc dòng mới là tốt
Ví dụ :
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
Đây là một thử thách chơi gôn , mã ngắn nhất trong mỗi ngôn ngữ sẽ thắng.
(Tương tự, nhưng không trùng lặp: Chuyển đổi số thập phân thành phân số , Phân số gần nhất , Số dấu phẩy động gần đúng với độ chính xác n chữ số )
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"
Điều đó có nghĩa là chúng tôi cũng có thể trở lại7 in 100
? Btw,1 in 14
gần với đầu vào hơn trong trường hợp này.