政治的なウェブサイトを運営しており、選挙の勝ち負けの可能性が割合( "71%"で表される場合よりも比率( "5 in 7")で表される場合、人々はより直感的に理解できると判断しました)。
ただし、「58 in 82」のような混乱を招く比率を表示したくない場合は、たとえそれらの比率がそれほど正確でなくても、より簡単に理解できるようにします。
したがって、0.1%から99.9%の間のパーセンテージを指定すると、次の規則を使用して、最も近い「わかりやすい」比率「x in y」を返します。
- ほとんどの値(以下の例外を参照)は、10以下から最も近い比率を返します。55%は「11 in 20」ではなく「5 in 9」を返す必要があります。
- 比率は最低の条件に減らす必要があります。65%は、「4 in 6」ではなく「2 in 3」を返す必要があります。
- 10%未満の値は、nが(10,12,15,20,30,40,50,60,70,80,90,100)のいずれかであるフォーム " n in 1 "の最も近い比率を返す必要があります。たとえば、6%は「1 in 15」を返します。
- 90%を超える値は、フォーム " n-1 in n "の最も近い比率を返す必要があります。nは(10,12,15,20,30,40,50,60,70,80,90,100)のいずれかです。たとえば、98.7%は「79 in 80」を返します。
- 1%未満の値は、「<1 in 100」を返す必要があります
- 99%を超える値は、「> 99 in 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 in 4")を出力する必要があります。
- 入力に等しく近い2つの比率がある場合、プログラムはどちらかを返すことができます。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
も同様に戻ることができるということですか?ところで、1 in 14
この場合の入力に近いです。