Anda menjalankan situs web politik , dan telah menentukan bahwa orang-orang memiliki pemahaman intuitif yang lebih baik ketika peluang menang atau kalahnya pemilihan dinyatakan sebagai rasio ("5 dalam 7") daripada ketika itu dinyatakan sebagai persentase ("71%" ).
Tetapi Anda juga tidak ingin menampilkan rasio yang membingungkan seperti "58 in 82", Anda ingin agar rasio tersebut lebih mudah dipahami, bahkan jika rasio tersebut tidak terlalu tepat.
Jadi, mengingat persentase antara 0,1% dan 99,9%, kembalikan rasio "mudah dimengerti" terdekat " x in y ", dengan menggunakan aturan berikut :
- Sebagian besar nilai (lihat pengecualian di bawah) harus mengembalikan rasio terdekat dari 10 atau lebih rendah . 55% harus mengembalikan "5 in 9", bukan "11 in 20".
- Rasio harus dikurangi ke tingkat terendah . 65% harus mengembalikan "2 in 3", bukan "4 in 6".
- Nilai di bawah 10% harus mengembalikan rasio terdekat dari bentuk " 1 dalam n " di mana n adalah salah satu dari (10,12,15,20,30,40,50,60,70,80,80,90,100) . Misalnya, 6% harus mengembalikan "1 dalam 15".
- Nilai lebih dari 90% harus mengembalikan rasio terdekat dari bentuk " n-1 in n " di mana n adalah salah satu dari (10,12,15,20,30,40,50,60,70,80,80,90,100) . Misalnya, 98,7% harus mengembalikan "79 in 80".
- Nilai di bawah 1% harus mengembalikan " <1 dalam 100 "
- Nilai lebih dari 99% harus mengembalikan " > 99 dalam 100 "
Atau, kalau dipikir-pikir dengan cara lain, program Anda harus mengembalikan rasio terdekat dari kemungkinan keluaran berikut (saya telah memasukkan nilai perkiraannya untuk kenyamanan Anda):
<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
Ketentuan lainnya:
- Input numerik dapat berada dalam kisaran 0,1 hingga 99,9 atau dalam kisaran 0,001 hingga 0,999 , mana yang lebih nyaman. Anda harus menangani setidaknya 3 digit signifikan.
- Anda harus menghasilkan rasio ("3 in 4"), bukan fraksi yang setara ("3/4").
- Jika ada dua rasio yang sama dekat dengan input, program Anda dapat mengembalikan keduanya. 7,5% dapat mengembalikan "1 dalam 12" atau "1 dalam 15".
- Ruang putih terkemuka / tertinggal dan / atau garis baru baik-baik saja
Contoh :
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
Ini adalah tantangan kode-golf , kode terpendek dalam setiap bahasa menang.
(Mirip dengan, tetapi bukan duplikat dari: Konversi desimal menjadi pecahan , pecahan terdekat , Perkiraan angka floating point dengan presisi n-digit )
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"
Apakah itu berarti kita dapat kembali7 in 100
juga? Btw,1 in 14
lebih dekat dengan input dalam hal ini.