HERAUSFORDERUNGSSTATUS: OFFEN
Kommentar, PR eröffnen oder mich anderweitig anschreien, wenn ich deinen Bot vermisse.
Gefangenendilemma ... mit drei Möglichkeiten. Verrückt, nicht wahr?
Hier ist unsere Auszahlungsmatrix. Spieler A links, B oben
A,B| C | N | D
---|---|---|---
C |3,3|4,1|0,5
N |1,4|2,2|3,2
D |5,0|2,3|1,1
Die Auszahlungsmatrix ist so konstruiert, dass beide Spieler immer zusammenarbeiten können. Sie können jedoch (normalerweise) gewinnen, indem Sie Neutral oder Defection wählen.
Hier sind einige (konkurrierende) Beispiel-Bots.
# turns out if you don't actually have to implement __init__(). TIL!
class AllC:
def round(self, _): return "C"
class AllN:
def round(self, _): return "N"
class AllD:
def round(self, _): return "D"
class RandomBot:
def round(self, _): return random.choice(["C", "N", "D"])
# Actually using an identically-behaving "FastGrudger".
class Grudger:
def __init__(self):
self.history = []
def round(self, last):
if(last):
self.history.append(last)
if(self.history.count("D") > 0):
return "D"
return "C"
class TitForTat:
def round(self, last):
if(last == "D"):
return "D"
return "C"
Ihr Bot ist eine Python3-Klasse. Für jedes Spiel wird eine neue Instanz erstellt, round()
die in jeder Runde mit der Auswahl des Gegners aus der letzten Runde aufgerufen wird (oder Keine, wenn es die erste Runde ist).
In nur einem Monat gibt es eine Prämie von 50 Wiederholungen für den Gewinner.
Besonderheiten
- Jeder Bot spielt in [ANONYMISIERT] Runden jeden anderen Bot (1vs1), einschließlich sich selbst.
- Standardlücken sind nicht erlaubt.
- Keine Unordnung mit irgendetwas außerhalb Ihrer Klasse oder anderen hinterhältigen Spielereien.
- Sie können bis zu fünf Bots einreichen.
- Ja, Sie können Handshake implementieren.
- Jede andere Antwort als
C
,N
oderD
wird stillschweigend alsN
. - Die Punkte jedes Bots aus jedem Spiel, das er spielt, werden aufsummiert und verglichen.
Regler
Andere Sprachen
Ich werde eine API zusammenstellen, falls jemand sie benötigt.
Scores: 2018-11-27
27 bots, 729 games.
name | avg. score/round
----------------|-------------------
PatternFinder | 3.152
DirichletDice2 | 3.019
EvaluaterBot | 2.971
Ensemble | 2.800
DirichletDice | 2.763
Shifting | 2.737
FastGrudger | 2.632
Nash2 | 2.574
HistoricAverage | 2.552
LastOptimalBot | 2.532
Number6 | 2.531
HandshakeBot | 2.458
OldTitForTat | 2.411
WeightedAverage | 2.403
TitForTat | 2.328
AllD | 2.272
Tetragram | 2.256
Nash | 2.193
Jade | 2.186
Useless | 2.140
RandomBot | 2.018
CopyCat | 1.902
TatForTit | 1.891
NeverCOOP | 1.710
AllC | 1.565
AllN | 1.446
Kevin | 1.322
while len(botlist) > 1:
mit einschließen botlist.remove(lowest_scoring_bot)
, erhalten Sie ein Ausscheidungsturnier mit interessanten Ergebnissen.