環境
わら世論調査は、単純な/非公式の世論調査の作成を目的としたウェブサイトです。オプションのリストが提供され、ユーザーは選択肢を選択でき、投票が集計されます。わら投票には2つの非常に重要な機能があります。
- 投票する前に現在の結果を見ることができます
- 多くの場合、複数のオプションを選択できます。これは、各オプションに1つずつ、複数回投票した場合と同じように扱われます。
わら世論調査を作るよりも楽しいことの1つは、結果をいじることです。中断には主に2つのタイプがあります。
- すべてのオプションに投票する単純な混乱
- 効果を最大化するために投票するオプションを戦略的に選択する高度な混乱。
この課題では、高度な混乱のためのプログラムを作成します。
数学
数学的に単純に言えば、投票のエントロピーが高いほど、投票はより混乱していると言えます。 つまり、単一のオプションがすべての投票を持つ投票はまったく中断されませんが、すべてのオプションが同じ数の投票を持つ投票は最大に中断されます(これが最終的な目標です)。
数値リストのエントロピーは、[x1, x2, ..., xn]ウィキペディアの次の方程式で与えられます。P(xi)の確率xiですxi / total_num_of_votes。オプションがこれまでに投票数0の場合、そのオプションは合計に含まれません(を避けるためlog(0))。私たちの目的では、対数は任意の底に置くことができます。
例として、のエントロピー[3,2,1,1]は1.277、底eを使用しておよそです。
次のステップは、エントロピーの最大の増加につながる投票パターンを決定することです。オプションの任意のサブセットに投票できるので、たとえば、私の投票はになる可能性があります[1,0,1,0]。これらが私の投票だった場合、最終的な集計は[4,2,2,1]です。エントロピーを再計算するとが得られ1.273、エントロピーが減少します。これは、これが破壊の恐ろしい試みであることを意味します。その他のオプションは次のとおりです。
don't vote
[3,2,1,1] -> 1.277
vote for everything
[4,3,2,2] -> 1.342
vote for the 1s
[3,2,2,2] -> 1.369
vote for the 2 and 1s
[3,3,2,2] -> 1.366
このことから、エントロピーが最大に増加するため、最適な投票パターンであると結論付けられ[0,0,1,1]ます。
入力
入力は、増加しない非負の整数の空でないリストです。例としては[3,3,2,1,0,0]、[123,23,1]さえ、または[4]。妥当な形式であれば何でも許容されます。
出力
出力は真と偽の値のリスト(入力と同じ長さ)です。真とは、最大の混乱を引き起こしたい場合に投票するオプションを表します。複数の投票パターンが同じエントロピーを与える場合、どちらか一方を出力できます。
受賞基準
これはコードゴルフであり、バイト数が少ないほど良いです。
テストケース
[3,2,1,1] -> [0,0,1,1] (from 1.227 to 1.369)
[3,3,2,1,0,0] -> [0,0,0,1,1,1] (from 1.311 to 1.705)
[123,23,1] -> [0,1,1] (from 0.473 to 0.510)
[4] -> [0] OR [1] (from 0 to 0)
[7,7,6,6,5] -> [0,0,1,1,1] (from 1.602 to 1.608)
[100,50,1,1] -> [0,1,1,1] (from 0.707 to 0.761)
