To wyzwanie na szczycie wzgórza opiera się na teleturnieju Weakest Link . Dla tych, którzy nie znają tego programu, sedno tego wyzwania dotyczy tego, komu głosujesz :
- Jeśli inni gracze są mądrzejsi od ciebie, masz mniejsze szanse na zdobycie puli.
- Jeśli inni gracze są głupsi od ciebie, masz mniej puli do zdobycia.
Na początku każdej rundy, Pot zaczyna się od $ 0. Powstaje grupa 9 graczy, a każdy gracz otrzymuje unikalną inteligencję od 1 do 9.
Na początku każdej tury, Pot += Smartness
dla każdego gracza wciąż w rundzie. Następnie gracze głosują na gracza, którego chcą usunąć. Gracz z największą liczbą głosów zostanie usunięty. W przypadku remisu mądrzejszy gracz zostaje zachowany.
Gdy w rundzie zostają tylko 2 graczy, walczą oni w bitwie sprytu. Jest szansa na wygraną gracza Smartness/(Smartness+OpponentSmartness)
. Zwycięski gracz otrzymuje wtedy całą pulę.
Gracz, który otrzymał najwięcej pieniędzy na koniec gry, wygrywa.
Wejście wyjście
W każdej turze otrzymujesz aktualną listę przeciwników. Będziesz miał dostęp do swojej inteligencji i całej historii głosowania wszystkich graczy w rundzie dzięki funkcjom w klasie Gracza.
Jako wynik musisz zwrócić jedną liczbę całkowitą, reprezentującą gracza, na którego chcesz głosować (reprezentujący jego inteligencję). Głosowanie na siebie jest dozwolone (ale nie zalecane).
Rundy 9 będą się powtarzać, aż wszyscy gracze rozegrają co najmniej 1000 10000 rund, a wszyscy gracze rozegrają tę samą liczbę rund.
Kontroler można znaleźć tutaj: https://github.com/nathanmerrill/WeakestLink
Aby stworzyć gracza, musisz rozszerzyć klasę Player i dodać swojego gracza do klasy PlayerFactory. Twoja klasa musi przestrzegać następujących zasad:
Komunikacja lub ingerencja w jakikolwiek inny odtwarzacz (w tym innych graczy tego samego typu) jest surowo zabroniona.
Odbicie i zmienne statyczne (z wyjątkiem stałych) są niedozwolone.
Jeśli chcesz użyć losowości, podałem
getRandom()
funkcję w klasie Player. Użyj go, aby symulacje mogły być deterministyczne.
Udostępniłem wiele funkcji w klasie Player dla łatwego dostępu do danych. Można je znaleźć online na Github . Twój gracz zostanie utworzony w każdej nowej rundzie. Gracze „głupi / samobójcy” są dozwoleni (ale nie gracze o tej samej strategii).
Wyniki
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
użyłem javac Game\*.java Players\*.java Main.java
, aby skompilować i java -cp .. WeakestLink.Main
uruchomić.