前書き
投票の選択肢の割合のセットが与えられたら、それらの統計を生成するために投票に含まれる必要がある有権者の最小数を計算します。
例:お気に入りのペットは何ですか?
- 犬:
44.4%
- ネコ:
44.4%
- マウス:
11.1%
出力:(9
投票者の可能な最小数)
スペック
プログラム/機能の要件は次のとおりです。
- 入力としてパーセンテージ値の配列が与えられます(標準入力、関数の引数など)。
- 各パーセント値は、小数点以下1桁に丸められた数値です(たとえば、
44.4 44.4 11.1
。 - (stdoutまたは関数の戻り値で)小数点以下1桁に丸めた場合、その結果が正確なパーセンテージになる投票の投票者の最小数を計算します。
- ボーナス:「自明ではない」方法で解決できる場合は-15文字(つまり、有効な最初の有権者が見つかるまで、可能な限りすべての有権者を反復処理する必要はありません)
例
>./pollreverse 44.4 44.4 11.1
9
>./pollreverse 26.7 53.3 20.0
15
>./pollreverse 48.4 13.7 21.6 6.5 9.8
153
>./pollreverse 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 99.6
2000
>./pollreverse 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 98.7
667
>./pollreverse 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 98.7
2000
>./pollreverse 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 97.8
401
得点
これはコードゴルフですので、可能な限り短いキャラクターが勝ちます。ボーナスは、合計文字数からさらに差し引かれます。
0.5%
たびに合計から合計が失われ、切り上げが行われるたび0.5%
に合計が合計されます。最後の4つのテストケースは、この現象を最適に活用するために意図的に作成されました。結果の最初のテストケースで2000
は、最初の9つのエントリはそれぞれ1
投票を表し(すべて切り上げられます0.5%
)、最後のエントリは投票を表します1991
(切り捨てられます〜0.5%
)。これらのパーセンテージを手動で計算し、小数点以下1桁に丸めると、すべて正しいことがわかります。
26.7 53.3 20.0
(4 8 3の15)、48.4 13.7 21.6 6.5 9.8
(74 21 33 10 153の15)など