Questa sfida king-of-the-hill si basa sul gioco show, Weakest Link . Per coloro che non hanno familiarità con lo spettacolo, il punto cruciale di questa sfida riguarda chi si vota :
- Se gli altri giocatori sono più intelligenti di te, allora hai meno possibilità di ottenere il piatto.
- Se gli altri giocatori sono più stupidi di te, allora hai meno di un piatto da ottenere.
All'inizio di ogni round, il piatto inizia con $ 0. Si forma un gruppo di 9 giocatori e ad ogni giocatore viene assegnata una Smartness unica da 1 a 9.
All'inizio di ogni turno, Pot += Smartness
per ogni giocatore ancora nel round. Quindi, i giocatori votano il giocatore che desiderano rimuovere. Il giocatore con il maggior numero di voti viene rimosso. In caso di pareggio, il giocatore più intelligente viene mantenuto.
Quando rimangono solo 2 giocatori nel round, si affrontano in una battaglia di ingegno. La possibilità che il giocatore vinca è Smartness/(Smartness+OpponentSmartness)
. Il giocatore vincitore riceve quindi l'intero piatto.
Vince il giocatore che ha ricevuto più soldi alla fine della partita.
Input Output
Ad ogni turno, riceverai l'elenco attuale degli avversari. Avrai accesso alla tua intelligenza e all'intera cronologia dei voti di tutti i giocatori per il round tramite le funzioni della classe Player.
Come output, devi restituire un singolo intero, che rappresenta il giocatore per il quale desideri votare (che rappresenta la loro intelligenza). Il voto per te è permesso (ma non raccomandato).
I round da 9 si ripetono fino a quando tutti i giocatori hanno giocato almeno 1000 10000 round e tutti i giocatori hanno giocato nello stesso numero di round.
Puoi trovare il controller qui: https://github.com/nathanmerrill/WeakestLink
Per creare un giocatore, è necessario estendere la classe Player e aggiungere il giocatore alla classe PlayerFactory. La tua classe deve seguire le seguenti regole:
La comunicazione o l'interferenza con qualsiasi altro giocatore (inclusi gli altri giocatori dello stesso tipo) è severamente vietata.
La riflessione e le variabili statiche (ad eccezione delle costanti) non sono consentite.
Se vuoi usare la casualità, ho fornito una
getRandom()
funzione nella classe Player. Usalo, quindi le simulazioni possono essere deterministiche.
Ho fornito molte funzioni nella classe Player per un facile accesso ai dati. Puoi trovarli online su Github . Il tuo giocatore verrà istanziato ad ogni nuovo round. Sono ammessi giocatori "stupidi / suicidi" (ma non giocatori con la stessa strategia).
I punteggi
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
ero solito javac Game\*.java Players\*.java Main.java
compilare ed java -cp .. WeakestLink.Main
eseguire.