Este desafio do rei da colina é baseado no game show, Weakest Link . Para aqueles que não estão familiarizados com o programa, o cerne desse desafio lida com quem você vota :
- Se os outros jogadores são mais espertos que você, você tem menos chances de ganhar o pote.
- Se os outros jogadores são mais burros que você, você tem menos pote para ganhar.
No início de cada rodada, o pote começa com $ 0. Um grupo de 9 jogadores é formado e cada jogador recebe uma Inteligência única de 1 a 9.
No início de cada turno, Pot += Smartness
para cada jogador ainda na rodada. Em seguida, os jogadores votam no jogador que desejam remover. O jogador com mais votos é removido. Em caso de empate, o jogador mais esperto é mantido.
Quando restam apenas 2 jogadores na rodada, eles se enfrentam em uma batalha de inteligência. A chance do jogador vencer é Smartness/(Smartness+OpponentSmartness)
. O jogador vencedor recebe o pote inteiro.
O jogador que recebeu mais dinheiro no final do jogo vence.
Entrada / Saída
A cada turno, você receberá a lista atual de oponentes. Você terá acesso à sua inteligência e a todo o histórico de votação de todos os jogadores da rodada por meio de funções na classe Player.
Como saída, você deve retornar um único número inteiro, representando o jogador no qual deseja votar (representando sua inteligência). Votar em si mesmo é permitido (mas não recomendado).
As rodadas de 9 serão repetidas até que todos os jogadores tenham jogado pelo menos 1000 10000 rodadas, e todos os jogadores tenham jogado no mesmo número de rodadas.
Você pode encontrar o controlador aqui: https://github.com/nathanmerrill/WeakestLink
Para criar um jogador, você precisa estender a classe Player e adicioná-lo à classe PlayerFactory. Sua turma deve seguir as seguintes regras:
É estritamente proibida a comunicação ou interferência com qualquer outro jogador (incluindo outros jogadores do mesmo tipo).
Variáveis de reflexão e estáticas (exceto constantes) não são permitidas.
Se você deseja usar a aleatoriedade, forneci uma
getRandom()
função na classe Player. Use-o para que as simulações possam ser determinísticas.
Eu forneci muitas funções na classe Player para facilitar o acesso aos dados. Você pode encontrá-los online no Github . Seu jogador será instanciado a cada nova rodada. Jogadores "burros / suicidas" são permitidos (mas não jogadores com a mesma estratégia).
Pontuações
377195 WeakestLink.Players.PrudentSniper
362413 WeakestLink.Players.Sniper
353082 WeakestLink.Players.VengefulSniper
347574 WeakestLink.Players.AntiExtremist
298006 WeakestLink.Players.BobPlayer
273867 WeakestLink.Players.MedianPlayer
247881 WeakestLink.Players.TheCult
240425 WeakestLink.Players.Leech
235480 WeakestLink.Players.SniperAide
223128 WeakestLink.Players.Guard
220760 WeakestLink.Players.Anarchist
216839 WeakestLink.Players.RevengePlayer
215099 WeakestLink.Players.IndependentVoter
213883 WeakestLink.Players.SniperKiller
210653 WeakestLink.Players.MaxPlayer
210262 WeakestLink.Players.Bandwagon
209956 WeakestLink.Players.MeanPlayer
208799 WeakestLink.Players.Coward
207686 WeakestLink.Players.Spy
204335 WeakestLink.Players.Hero
203957 WeakestLink.Players.MiddleMan
198535 WeakestLink.Players.MinPlayer
197589 WeakestLink.Players.FixatedPlayer
197478 WeakestLink.Players.HighOrLowNotSelf
181484 WeakestLink.Players.RandomPlayer
165160 WeakestLink.Players.BridgeBurner
src\WeakestLink
eu costumava javac Game\*.java Players\*.java Main.java
compilar e java -cp .. WeakestLink.Main
executar.