문맥
Straw Poll 은 단순 / 비공식 여론 조사를위한 웹 사이트입니다. 옵션 목록이 제공되면 사용자는 선택 사항을 선택할 수 있고 투표가 집계됩니다. 밀짚 설문 조사에는 두 가지 중요한 기능이 있습니다.
- 투표하기 전에 현재 결과를 볼 수 있습니다
- 여러 옵션을 선택하는 것이 종종 가능하며, 각 옵션마다 하나씩 여러 번 투표 한 것과 같은 방식으로 처리됩니다.
밀짚 설문 조사를 만드는 것보다 더 재미있는 것은 결과를 망쳐 놓는 것입니다. 두 가지 주요 유형의 중단이 있습니다.
- 모든 옵션에 투표하는 간단한 중단
- 효과를 극대화하기 위해 투표 할 옵션을 전략적으로 선택하는 고급 중단.
이 도전에서는 고급 중단을 위한 프로그램을 작성하게됩니다 .
수학
수학적으로 간단히 말하면 투표의 엔트로피가 높을수록 설문 조사가 더 중단 되었다고 말할 수 있습니다 . 즉, 단일 옵션이 모든 투표를 갖는 투표는 전혀 중단되지 않고 모든 옵션이 동일한 투표 수를 갖는 투표는 최대로 중단됩니다 (이것이 궁극적 인 목표입니다).
숫자 목록의 엔트로피는 [x1, x2, ..., xn]Wikipedia의 다음 방정식으로 제공됩니다. P(xi)의 확률 xi이다 xi / total_num_of_votes. 옵션이 지금까지 0 표를받지 못했다면, 간단히 피하기 위해 합계에 포함되지 않습니다 log(0). 우리의 목적을 위해, 로그는 당신이 선택한 어떤 기반이든 될 수 있습니다.
예를 들어,의 엔트로피 [3,2,1,1]는 대략 e를1.277 사용합니다 .
다음 단계는 어떤 투표 패턴이 엔트로피를 가장 크게 증가시키는지를 결정하는 것입니다. 옵션의 하위 집합에 투표 할 수 있으므로 예를 들어 내 투표는입니다 [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)
