СТАТУС ВИПУСКУ: ВІДКРИТИ
Прокоментуйте, відкрийте PR або інакше кричите на мене, якщо я пропускаю вашого бота.
Дилема в'язня ... з трьома варіантами. Божевільний, так?
Ось наша матриця виплат. Гравець A зліва, B вгорі
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
Матриця виплат розроблена так, що обидва гравці найкраще завжди співпрацювати, але ви можете отримати (як правило) вибір, вибравши нейтральний або дефектний.
Ось кілька (конкуруючих) прикладів ботів.
# 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"
Ваш бот - клас Python3. Для кожної гри створюється новий екземпляр, round()
який називається кожен раунд, за вибором опонента з останнього раунду (або Жодного, якщо це перший раунд)
Там, як місяць, виграш 50 переможців для переможця.
Особливості
- Кожен бот грає у кожного іншого бота (1v1), включаючи самого себе, у [РЕДАКТОВАНІ] раунди.
- Стандартні лазівки заборонені.
- Не возитися ні з чим поза вашим класом чи іншими неприхованими шенагінгами.
- Ви можете подати до п'яти ботів.
- Так, ви можете реалізувати рукостискання.
- Будь-яка відповідь, крім
C
,N
абоD
буде мовчки сприйнята якN
. - Очки кожного бота за кожну гру, яку вони грають, підсумовуються та порівнюються.
Контролер
Інші мови
Я зберу API, якщо комусь це потрібно.
Оцінки: 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:
з botlist.remove(lowest_scoring_bot)
у нижній частині циклу, ви отримаєте елімінаційний турнір із цікавими результатами.