Este desafío del rey de la colina se basa en el programa de juegos, Weakest Link . Para aquellos que no están familiarizados con el programa, el quid de este desafío es con quién votar :
- Si los otros jugadores son más inteligentes que tú, entonces tienes menos posibilidades de obtener el bote.
- Si los otros jugadores son más tontos que tú, entonces tienes menos bote para conseguir.
Al comienzo de cada ronda, el bote comienza con $ 0. Se forma un grupo de 9 jugadores, y cada jugador recibe una Inteligencia única del 1 al 9.
Al comienzo de cada turno, Pot += Smartness
para cada jugador aún en la ronda. Luego, los jugadores votan sobre el jugador que desean eliminar. El jugador con más votos es eliminado. En caso de empate, se mantiene al jugador más inteligente.
Cuando solo quedan 2 jugadores en la ronda, se enfrentan en una batalla de ingenio. La posibilidad de que el jugador gane es Smartness/(Smartness+OpponentSmartness)
. El jugador ganador recibe el bote completo.
El jugador que ha recibido la mayor cantidad de dinero al final del juego gana.
De entrada y salida
Cada turno, recibirás la lista actual de oponentes. Tendrá acceso a su inteligencia y al historial de votación completo de todos los jugadores para la ronda a través de funciones en la clase Jugador.
Como resultado, debe devolver un número entero único, que represente al jugador por el que desea votar (que representa su inteligencia). Votar por ti mismo está permitido (pero no recomendado).
Las rondas de 9 se repetirán hasta que todos los jugadores hayan jugado al menos 1000 10000 rondas, y todos los jugadores hayan jugado en la misma cantidad de rondas.
Puede encontrar el controlador aquí: https://github.com/nathanmerrill/WeakestLink
Para crear un jugador, debe extender la clase Player y agregar su jugador a la clase PlayerFactory. Su clase debe seguir las siguientes reglas:
La comunicación o interferencia con cualquier otro jugador (incluidos sus otros jugadores del mismo tipo) está estrictamente prohibida.
La reflexión y las variables estáticas (excepto las constantes) no están permitidas.
Si desea utilizar la aleatoriedad, he proporcionado una
getRandom()
función en la clase Player. Úselo, por lo que las simulaciones pueden ser deterministas.
He proporcionado muchas funciones en la clase Player para facilitar el acceso a los datos. Puede encontrarlos en línea en Github . Su jugador será instanciado en cada nueva ronda. Se permiten jugadores "tontos / suicidas" (pero no jugadores con la misma estrategia).
Puntuaciones
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
solía javac Game\*.java Players\*.java Main.java
compilar y java -cp .. WeakestLink.Main
correr.