STATO DELLE SFIDE: APERTO
Commenta, apri un PR o urlami altrimenti se mi manca il tuo bot.
Il dilemma del prigioniero ... con tre scelte. Pazzo, eh?
Ecco la nostra matrice di payoff. Giocatore A a sinistra, B in alto
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
La matrice di payoff è progettata in modo che sia meglio per entrambi i giocatori cooperare sempre, ma puoi guadagnare (di solito) scegliendo Neutral o Defection.
Ecco alcuni esempi di robot (concorrenti).
# 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"
Il tuo bot è una classe Python3. Viene creata una nuova istanza per ogni gioco e round()
viene chiamata per ogni round, con la scelta del tuo avversario dall'ultimo round (o Nessuno, se è il primo round)
C'è un premio di 50 ripetizioni per il vincitore in circa un mese.
specifiche
- Ogni bot gioca ogni altro bot (1v1), incluso se stesso, in round [REDATTO].
- Scappatoie standard non consentite.
- Non si scherza con nulla al di fuori della tua classe o con altri shenanigain subdoli.
- Puoi inviare fino a cinque robot.
- Sì, puoi implementare la stretta di mano.
- Qualsiasi risposta diversa da
C
,N
oD
verrà presa silenziosamente comeN
. - I punti di ciascun bot di ogni gioco a cui partecipano verranno sommati e confrontati.
controllore
Altre lingue
Metterò insieme un'API se qualcuno ne ha bisogno.
Punteggi: 27-11-2018
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:
con botlist.remove(lowest_scoring_bot)
in fondo al ciclo, otterrai un torneo di eliminazione con risultati interessanti.