Ce défi roi est basé sur le jeu télévisé Weakest Link . Pour ceux qui ne sont pas familiarisés avec le spectacle, le cœur de ce défi concerne le vote de votre choix :
- Si les autres joueurs sont plus intelligents que vous, alors vous avez moins de chance de gagner le pot.
- Si les autres joueurs sont plus stupides que vous, vous avez moins de pot à gagner.
Au début de chaque tour, le pot commence avec 0 $. Un groupe de 9 joueurs est formé et chaque joueur reçoit une Smartness unique allant de 1 à 9.
Au début de chaque tour, Pot += Smartness
pour chaque joueur encore dans le tour. Ensuite, les joueurs votent sur le joueur qu’ils souhaitent supprimer. Le joueur avec le plus de votes est supprimé. En cas d'égalité, le joueur le plus intelligent est gardé.
Lorsqu'il ne reste plus que 2 joueurs dans la ronde, ils s'affrontent dans une bataille d'esprits. La chance de gagner le joueur est Smartness/(Smartness+OpponentSmartness)
. Le joueur gagnant reçoit alors le pot entier.
Le joueur qui a reçu le plus d’argent à la fin de la partie gagne.
Entrée sortie
À chaque tour, vous recevrez la liste actuelle des adversaires. Vous aurez accès à votre intelligence et à l' historique de vote complet de tous les joueurs pour le tour via des fonctions de la classe Player.
En sortie, vous devez renvoyer un entier unique représentant le joueur pour lequel vous souhaitez voter (représentant son intelligence). Voter pour vous - même est autorisé (mais non recommandé).
Les tours de 9 se répètent jusqu'à ce que tous les joueurs aient joué au moins 1000 10000 tours et que tous les joueurs aient joué le même nombre de tours.
Vous pouvez trouver le contrôleur ici: https://github.com/nathanmerrill/WeakestLink
Pour créer un lecteur, vous devez étendre la classe Player et ajouter votre lecteur à la classe PlayerFactory. Votre classe doit suivre les règles suivantes:
Toute communication ou interférence avec un autre joueur (y compris vos autres joueurs du même type) est strictement interdite.
Les variables de réflexion et statiques (à l'exception des constantes) ne sont pas autorisées.
Si vous souhaitez utiliser le caractère aléatoire, j'ai fourni une
getRandom()
fonction dans la classe Player. Utilisez-le pour que les simulations puissent être déterministes.
J'ai fourni de nombreuses fonctions dans la classe Player pour un accès facile aux données. Vous pouvez les trouver en ligne sur Github . Votre joueur sera instancié à chaque nouveau tour. Les joueurs "stupides / suicidaires" sont autorisés (mais pas les joueurs avec la même stratégie).
Les scores
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
j'avais l'habitude javac Game\*.java Players\*.java Main.java
de compiler et java -cp .. WeakestLink.Main
de courir.