ESTADO DEL DESAFÍO: ABIERTO
Comenta, abre un RP o grítame si me falta tu bot.
El dilema del prisionero ... con tres opciones. Loco, ¿eh?
Aquí está nuestra matriz de pagos. Jugador A a la izquierda, B en la parte superior
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 matriz de pagos está diseñada para que sea mejor para ambos jugadores cooperar siempre, pero puedes ganar (generalmente) eligiendo Neutral o Defection.
Aquí hay algunos bots de ejemplo (competidores).
# 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"
Tu bot es una clase Python3. Se crea una nueva instancia para cada juego, y round()
se llama cada ronda, con la elección de su oponente de la última ronda (o Ninguno, si es la primera ronda)
Hay una recompensa de 50 repeticiones para el ganador en como un mes.
Detalles específicos
- Cada bot juega a cualquier otro bot (1v1), incluido él mismo, en rondas [ELIMINADO].
- Lagunas estándar no permitidas.
- No te metas con nada fuera de tu clase u otras travesuras deshonestas.
- Puedes enviar hasta cinco bots.
- Sí, puedes implementar un apretón de manos.
- Cualquier respuesta que no sea
C
,N
o seD
tomará en silencio comoN
. - Los puntos de cada bot de cada juego que jueguen se sumarán y compararán.
Controlador
Otros idiomas
Prepararé una API si alguien la necesita.
Puntajes: 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:
la botlist.remove(lowest_scoring_bot)
en la parte inferior del bucle, se obtiene un torneo de eliminación con resultados interesantes.