Diese King-of-the-Hill- Herausforderung basiert auf der Game-Show Weakest Link . Für diejenigen, die mit der Show nicht vertraut sind, ist der Kern dieser Herausforderung, wen Sie abstimmen :
- Wenn die anderen Spieler klüger sind als Sie, haben Sie weniger Chancen auf den Pot.
- Wenn die anderen Spieler dümmer sind als Sie, haben Sie weniger Pot zu bekommen.
Zu Beginn jeder Runde beginnt der Pot mit 0 $. Eine Gruppe von 9 Spielern wird gebildet und jedem Spieler wird eine einzigartige Intelligenz von 1 bis 9 verliehen.
Zu Beginn jeder Runde Pot += Smartness
für jeden Spieler, der noch in der Runde ist. Dann stimmen die Spieler über den Spieler ab, den sie entfernen möchten. Der Spieler mit den meisten Stimmen wird entfernt. Im Falle eines Gleichstands wird der intelligentere Spieler behalten.
Wenn nur noch 2 Spieler in der Runde sind, treten sie in einem Kampf um den Verstand gegeneinander an. Die Gewinnchance des Spielers ist Smartness/(Smartness+OpponentSmartness)
. Der Gewinner erhält dann den gesamten Pot.
Der Spieler, der am Ende des Spiels das meiste Geld erhalten hat, gewinnt.
Input-Output
In jeder Runde erhalten Sie die aktuelle Liste der Gegner. Über die Funktionen in der Spielerklasse haben Sie Zugriff auf Ihre Intelligenz und den gesamten Abstimmungsverlauf aller Spieler für die Runde.
Als Ausgabe müssen Sie eine einzelne Ganzzahl zurückgeben, die den Spieler darstellt, für den Sie stimmen möchten (für dessen Schlauheit). Das Wählen für sich selbst ist erlaubt (aber nicht empfohlen).
Runden mit 9 Runden werden wiederholt, bis alle Spieler mindestens 1000 bis 10000 Runden gespielt haben und alle Spieler die gleiche Anzahl von Runden gespielt haben.
Den Controller finden Sie hier: https://github.com/nathanmerrill/WeakestLink
Um einen Player zu erstellen, müssen Sie die Player-Klasse erweitern und Ihren Player der PlayerFactory-Klasse hinzufügen. Ihre Klasse muss die folgenden Regeln befolgen:
Kommunikation oder Interferenzen mit anderen Spielern (einschließlich Ihrer anderen Spieler desselben Typs) sind strengstens untersagt.
Reflexions- und statische Variablen (außer Konstanten) sind nicht zulässig.
Wenn Sie die Zufälligkeit verwenden möchten, habe ich eine
getRandom()
Funktion in der Player-Klasse bereitgestellt . Verwenden Sie es, damit Simulationen deterministisch sein können.
Ich habe in der Player-Klasse viele Funktionen für den einfachen Zugriff auf Daten bereitgestellt. Sie können sie online auf Github finden . Ihr Spieler wird bei jeder neuen Runde instanziiert. "Dumme / Selbstmörderische" Spieler sind erlaubt (aber nicht Spieler mit der gleichen Strategie).
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
ich javac Game\*.java Players\*.java Main.java
kompiliert und java -cp .. WeakestLink.Main
ausgeführt.