Итоговые результаты
+ ---------------------------------- + --------- + ---- ----- + --------- + ---------------------------- + | Имя | Оценка | WinRate | TieRate | Вероятность исключения | + ---------------------------------- + --------- + ---- ----- + --------- + ---------------------------- + | 1. SarcomaBotMk11 | 0,06333 | 6,13% | 0,41% | [42 24 10 8 6 4]% | | 2. WiseKickBot | 0.06189 | 5,91% | 0,56% | [51 12 7 10 7 6]% | | 3. StrikerBot | 0,05984 | 5,78% | 0,41% | [46 18 11 8 6 5]% | | 4. PerfectFractionBot | 0,05336 | 5,16% | 0,35% | [49 12 14 10 6 4]% | | 5. MehRanBot | 0,05012 | 4,81% | 0,41% | [57 12 8 7 6 5]% | | 6. OgBot | 0.04879 | 4,66% | 0,45% | [50 15 9 8 7 5]% | | 7. SnetchBot | 0.04616 | 4,48% | 0,28% | [41 29 8 9 5 3]% | | 8. AntiKickBot | 0,04458 | 4,24% | 0,44% | [20 38 17 10 6 4]% | | 9. MehBot | 0.03636 | 3,51% | 0,25% | [80 3 4 4 3 3]% | | 10. Meh20Bot | 0.03421 | 3,30% | 0,23% | [57 12 8 7 9 3]% | | 11. GenericBot | 0.03136 | 3,00% | 0,28% | [18 39 20 11 5 3]% | | 12. HardCodedBot | 0.02891 | 2,75% | 0,29% | [58 21 3 6 5 4]% | | 13. GangBot1 | 0.02797 | 2,64% | 0,32% | [20 31 35 6 3 2]% | | 14. SarcomaBotMk3 | 0.02794 | 2,62% | 0,34% | [16 15 38 17 7 4]% | | 15. GangBot0 | 0.02794 | 2,64% | 0,30% | [20 31 35 6 3 2]% | | 16. GangBot2 | 0.02770 | 2,62% | 0,31% | [20 31 35 6 3 2]% | | 17. TitTatBot | 0.02740 | 2,63% | 0,21% | [54 10 15 10 5 2]% | | 18. MataHari2Bot | 0.02611 | 2,35% | 0,51% | [39 26 11 11 6 5]% | | 19. PolyBot | 0.02545 | 2,41% | 0,27% | [53 18 6 13 5 3]% | | 20. SpitballBot | 0.02502 | 2,39% | 0,22% | [84 10 1 1 0 1]% | | 21. SquareUpBot | 0.02397 | 2,35% | 0,10% | [10 60 14 7 4 3]% | | 22. CauiousGamblerBot2 | 0.02250 | 2,19% | 0,13% | [60 18 10 5 3 1]% | | 23. Bot13 | 0.02205 | 2,15% | 0,11% | [90 0 2 3 2 1]% | | 24. AggroCalcBot | 0,01892 | 1,75% | 0,29% | [26 49 13 5 3 3]% | | 25. Осторожный бот | 0,01629 | 1,56% | 0,14% | [15 41 27 11 4 1]% | | 26. CoastBotV2 | 0,01413 | 1,40% | 0,02% | [83 12 3 1 0 0]% | | 27. CalculatingBot | 0,01404 | 1,29% | 0,22% | [87 9 1 1 1 1]% | | 28. HalfPunchBot | 0,01241 | 1,15% | 0,18% | [47 20 13 12 5 2]% | | 29. HalflifeS3Bot | 0,01097 | 1,00% | 0,20% | [76 9 5 4 2 2]% | | 30. AntiGangBot | 0,00816 | 0,76% | 0,11% | [94 1 1 1 1 1]% | | 31. GeometricBot | 0,00776 | 0,74% | 0,07% | [19 46 25 7 2 1]% | | 32. GuessBot | 0,00719 | 0,05% | 1,34% | [65 17 4 6 5 3]% | | 33. BoundedRandomBot | 0,00622 | 0,60% | 0,05% | [42 39 12 5 2 0]% | | 34. SpreaderBot | 0,00549 | 0,54% | 0,02% | [32 43 19 4 1 0]% | | 35. DeterminBot | 0,00529 | 0,45% | 0,16% | [22 41 20 11 4 2]% | | 36. PercentBot | 0,00377 | 0,38% | 0,00% | [85 8 4 2 1 0]% | | 37. HalvsiestBot | 0,00337 | 0,29% | 0,08% | [32 43 15 6 2 1]% | | 38. GetAlongBot | 0,00330 | 0,33% | 0,01% | [76 18 4 1 0 0]% | | 39. BandaidBot | 0,00297 | 0,29% | 0,02% | [76 9 10 4 1 0]% | | 40. TENaciousBot | 0,00287 | 0,29% | 0,00% | [94 4 1 0 0 0]% | | 41. SurvivalistBot | 0,00275 | 0,25% | 0,04% | [92 6 1 0 0 0]% | | 42. RandomBot | 0,00170 | 0,13% | 0,07% | [42 36 14 5 2 1]% | | 43. AggressiveBoundedRandomBotV2 | 0,00165 | 0,14% | 0,06% | [8 46 34 9 2 1]% | | 44. BloodBot | 0,00155 | 0,01% | 0,30% | [65 28 5 1 1 0]% | | 45. OutBidBot | 0,00155 | 0,03% | 0,25% | [65 6 21 6 1 1]% | | 46. BoxBot | 0,00148 | 0,10% | 0,09% | [10 51 33 5 1 1]% | | 47. LastBot | 0,00116 | 0,08% | 0,07% | [74 6 16 2 1 0]% | | 48. UpYoursBot | 0.00088 | 0,07% | 0,03% | [37 40 17 5 1 0]% | | 49. AverageBot | 0.00073 | 0,06% | 0,03% | [74 3 10 10 2 0]% | | 50. PatheticBot | 0,00016 | 0,01% | 0,02% | [94 0 5 1 0 0]% | | 51. Снаряженный бот | 0,00014 | 0,01% | 0,00% | [58 40 2 0 0 0]% | | 52. RobbieBot | 0,00009 | 0,01% | 0,00% | [32 41 24 2 0 0]% | | 53. WorstCaseBot | 0,00002 | 0,00% | 0,00% | [4 71 23 2 0 0]% | | 54. SmartBot | 0,00002 | 0,00% | 0,00% | [44 51 5 0 0 0]% | | 55. AAAAUpYoursBot | 0,00000 | 0,00% | 0,00% | [40 58 2 0 0 0]% | | 56. KickbanBot | 0,00000 | 0,00% | 0,00% | [67 32 1 0 0 0]% | | 57. OneShotBot | 0,00000 | 0,00% | 0,00% | [2 95 3 0 0 0]% | | 58. KickBot | 0,00000 | 0,00% | 0,00% | [100 0 0 0 0 0]% | | 59. КамикадзеБот | 0,00000 | 0,00% | 0,00% | [100 0 0 0 0 0]% | | 60. MeanKickBot | 0,00000 | 0,00% | 0,00% | [100 0 0 0 0 0]% | + ---------------------------------- + --------- + ---- ----- + --------- + ---------------------------- +
Спасибо всем, кто принял участие, и поздравляем @Sarcoma с победой!
Правила:
Каждый начинает с 100 л.с. В каждом раунде 2 игрока выбираются случайным образом из числа участников, которые еще не участвовали в этом раунде. Оба игрока выбирают число от 0 до текущего значения в л.с. и показывают эти цифры одновременно. Игрок, выбравший меньшее число, немедленно умирает. Другой игрок вычитает выбранное количество из оставшихся очков здоровья и переходит к следующему раунду.
Турнир работает так:
Из группы участников 2 выбираются случайным образом. Они сталкиваются, и один или оба из них умирают. Игрок умирает, если:
- Они выбирают число меньше номера своего оппонента
- Их л.с. падает до или ниже нуля
- Они три раза подряд связывают со своим противником
В случае связей оба игрока просто генерируют новые числа, до 3 раз. После вбрасывания оставшийся в живых (если таковой имеется) перемещается в пул для следующего раунда, и процесс повторяется до тех пор, пока мы не исчерпаем текущий пул раундов. Если в пуле есть нечетное число, то нечетное число бесплатно переходит в следующий раунд.
Ваша задача - написать функцию в python2.7, которая будет принимать в качестве входных данных ваш текущий hp
, список ставок вашего оппонента history
и целое число, ties
которое сообщает вам, сколько раз вы уже связались с вашим текущим оппонентом, и целое число, которое сообщает вам, как многие боты все еще alive
(включая вас), и целое число, в котором указано количество ботов на start
турнире. Обратите внимание, что история не включает в себя связи. Функция должна возвращать целое число между 0 и текущим общим количеством hp. Несколько простых примеров, которые игнорируют связи, показаны ниже:
def last(hp, history, ties, alive, start):
''' Bet a third of your hp at first, then bet your opponent's last bid, if possible '''
if history:
return np.minimum(hp-1, history[-1])
else:
return hp/3
def average(hp, history, ties, alive, start):
''' Bet the average opponent's bid so far, on the assumption that bids will tend downward '''
if history:
num = np.minimum(hp-1, int(np.average(history))+1)
else:
num = hp/2
return num
def random(hp, history, ties, alive, start):
''' DO YOU WANT TO LIVE FOREVER?! '''
return 1 + np.random.randint(0, hp)
Если ваша функция возвращает число больше, чем ваш hp, оно будет сброшено до 0. Да, можно убить себя. Ваша функция не должна пытаться получить доступ или изменить какой-либо член любого объекта класса RouletteBot. Вам не разрешается предпринимать какие-либо действия, которые однозначно идентифицируют вашего противника, независимо от будущих дополнительных ботов. Проверка стека разрешена, если теоретически возможно, что более чем один отдельный оппонент мог получить информацию, которую вы извлекаете из нее, даже если в настоящее время существует только один бот, который мог бы это сделать. то есть вы не можете просто прочитать стек, чтобы увидеть, какая вражеская функция была вызвана.
По этим правилам возможно, что победителя нет, а два последних участника убивают друг друга. В этом случае оба финалиста получают по пол-очка каждый.
Это моя первая попытка программирования, поэтому критика приветствуется!
Контроллер можно найти здесь .
источник
Ответы:
BinaryBot
Кто-нибудь сделал это еще? Каждый раунд ставит половину своего здоровья.
SarcomaBot
Если в последнем боевом предложении л.с. - 1. Если это первое сражение, то в половину л.с. плюс дополнительная случайная сумма до четверти л.с. Если он может побить прямую ставку оппонента после этой ставки, оппонент hp + 1. Если у него меньше здоровья, чем у оппонента, случайная сумма между 75% и текущим hp - 1.
SarcomaBotMk2
Незначительные изменения пытаются уменьшить расходы на жизнь.
SarcomaBotMk3
Обновление тонкой настройки
SarcomaBotMk4
SarcomaBotMk5
SarcomaBotMk6
SarcomaBotMk7
SarcomaBotMk8
SarcomaBotMk9
SarcomaBotMk10
Финальная заявка
SarcomaBotMk11
Добавлено обновление защиты UpYoursBot
Добавлено обновление защиты AntiAntiUpYoursBot
Обновление
AntiAnitAntiAntiUpYoursBot Я побежден
источник
UpYours
Опоздав на вход, я провел некоторое время, восхищаясь существующими ботами, потратив некоторое время, усложняя идеи ваших парней, затем не усложняя их. Потом до меня дошло
"Up Yours", потому что я беззастенчиво краду (и иногда ставлю точку или две на ставки ваших ботов, чтобы поднять их).
Но по-настоящему, это отличное соревнование, ребята. Я люблю это сообщество в такие дни.
источник
Камикадзе
Зачем беспокоиться о сложной логике, когда мы все умрем ...
Один выстрел
Он выживет хотя бы один раунд, если не встретит камикадзе.
источник
Патетический бот получает очень необходимое обновление:
Жалкая попытка бота, который пытается включить функции других ботов
Этот бот включает в себя функции от Survivalist Bot и Geometric Bot для более эффективного удаления ботов.
Pre-Upgrade:
Жалкая попытка бота, который анализирует историю своего противника
Если у его противника была предыдущая история, он рассчитывает hp противника. Затем он выполняет одно из следующих действий:
Если истории нет, то она делает некоторые причудливые вычисления, которые я взломал вместе, и предлагает цену. Если значение превышает 100, то оно автоматически назначает свою цену минус 1.
Я взломал этот код вместе во время работы, и это моя первая подача, так что, вероятно, она не выиграет или что-то в этом роде, и проиграет камикадзе.
РЕДАКТИРОВАТЬ: Из-за некоторых предложений, поведение начала бота было изменено, чтобы предложить цену выше.
РЕДАКТИРОВАТЬ 2: добавлен стартовый параметр, который ничего не делает
РЕДАКТИРОВАТЬ 3: Добавлен новый спин-бот:
[Жалкая попытка бота, который атакует бандитских ботов (а также делает все, что делает вышеупомянутый бот)] УДАЛЕНО
[Этот бот анализирует, является ли его противник бандой или нет, и притворяется таковым, чтобы получить приятные низкие ставки, которые он может легко превзойти.]
Этот бот был удален, пожалуйста, удалите его из списка лидеров.
РЕДАКТИРОВАТЬ 4: Исправлены ошибки, изменена функция связи.
источник
opp_hp +1
не хватает места, чтобы быть питоническим; Ваши комментарии начинаются с несбалансированного количества пробелов. Наконец, вашей функции не хватает строки документации.Kick Bot
Правильный выбор для моего оппонента - сделать ставку на половину своей жизни. Затем мы ставим до половины его жизни + 1, если мы не можем взять его с разумной ставкой, то есть ставкой меньше, чем половина нашей жизни.
Кик-бот, очевидно, является заклятым врагом пунта-бота!
Mean Kick Bot
Этот новый KickBot мягче пинает в первом раунде, чтобы он мог пнуть сильнее в следующих раундах, это значит!
Wise Kick Bot
Оба его брата должны были покончить жизнь самоубийством, но WiseKickBot учился у своих павших.
источник
Тат бот
Попытка эквивалента бота «синица за тату». Предполагается, что большинство ставок примерно одинаковы между раундами. Используя это предположение, он пытается победить вражеского бота, оставаясь при этом довольно скромным. Тратит около 40 здоровья на первый раунд.
AntiAntiAntiAntiUpYoursBot
Обходной путь для защиты SarcomaBot от UpYours, для которой я использую большую часть кода! Или я принимаю код UpYoursBot? Вопрос для размышления, пока вы читаете мой бот ...
Бот AntiAntiUpYours превратился в бот AntiAntiAntiUpYours! Теперь с большим количеством исправлений обезьян.
Поли бот
Поли-бот выполняет полиномиальную регрессию в истории вашего бота и немного превосходит прогнозируемый показатель.
Классный бот
Классный бот хорошо провел время, но решил рано лечь спать. Спи спокойно, классный бот.источник
1/2 Punch Bot, Revisited
Я думаю, что он умрет довольно быстро. Стоило того. Переименовал функцию, забыл поменять там имя.
Пересмотренная версия вышла, лучшие шансы на победу (тем более в финальном раунде) и небольшая защита от бандитских ботов
Нападающий бот
1/2 Punch Bot слишком много издевались и даже стали лакеем UpYoursBot, поэтому на помощь пришел его старший брат StrikerBot .
Не так уж много различий с оптимизированным 1/2 Punch, но он немного умнее и преуспел в бегах, которые я сделал (10k и 35k, хотя он может проиграть KickbanBot)
Последняя версия вышла, время истекло. Если не произойдет каких-либо сюрпризов, это должно занять второе место, если не получить первое (есть небольшой шанс победить кикбанбот)
источник
ceil
не определена.Gang Bot
Идея заключалась в том, что потенциально два или более бота могут быть использованы в одной симуляции. Бот пытается дать "легкий выигрыш" другим ботам в банде, посмотрев, кратна ли его история 7 ставкам. Конечно, этим могут легко манипулировать и другие боты. Затем я рассчитываю предположение о ставках ботов, не являющихся бандами, на основе отношения моего здоровья к их и отношения их предыдущего здоровья к их предыдущей ставке и добавляю 1.
источник
Худший случай
Простой бот. Возвращает
hp - hp / (start - alive + 4)
в большинстве случаев, а в случае связей увеличивает его на 2 (надо поднять!) Для каждого связывания, стараясь не возвращать число над егоhp
.источник
alive==8
. Я могу вручную изменить его на общее количество ботов, но это растягивает правила, поскольку это не влияет на вашу функцию - все, что вы знаете, сколько противников у вас осталось в данный момент времени, а не сколько вы начали против.Outbidder
Bot попытается сделать ставку выше , чем его противник может предложить цену , где это возможно.
источник
where np.random.randint(hp/5, hp/2)
может не сработать, еслиhp/5 == hp/2
, т.е. еслиhp==0
илиhp==1
Spitball Bot
Принимает решение о том, сколько здоровья он должен пожертвовать, основываясь на количестве оставшихся ботов. Если осталось только два бота, он делает ставку
hp-1
, но если осталось три, он бит вдвое меньше, четыре слева, третий и т. Д.Тем не менее, в очень большом конкурсе, я считаю, мне нужно будет делать ставку более чем на 3 или 4 л.с., чтобы не умереть в первом раунде, поэтому я поставил нижнюю границу на 10. Конечно, я все равно никогда не буду делать ставки больше. чем
hp-1
.Он также добавляет 1,5 л.с. для галстуков, так как я вижу несколько ботов "добавить 1 л.с. для галстуков". Я не уверен, что это считается обманом. Если это произойдет, я изменю это.
Отличная идея, кстати!
Spitball Bot 2.0
Что нового?
Переключен на деление на количество оставшихся раундов вместо количества оставшихся ботов (Спасибо @Heiteira!). На самом деле, теперь я делю это число на степень
.8
, чтобы немного увеличить фронтальные ставки.Увеличена минимальная ставка с 10 до 20 (Спасибо @KBriggs!)
Добавлена проверка того, превышает ли ставка на спитбол текущее значение HP противника, и понизьте ее, если она есть.
(SO не будет отображать код ниже как код, если я не помещу текст здесь, так что хорошо)
источник
геометрический
источник
Бот 13
Попробуйте максимизировать выигрыши с наименьшими усилиями:
Почему?
Попытайтесь воспользоваться вероятностью: выиграть первый раунд, играя на низком уровне, - лучший способ начать турнир. 13, кажется, сладкое пятно: второй раунд - уверенная победа, а остальные - Spaziergang в парке.
источник
Угадай Бот
Первое размещение здесь. Это выглядело очень весело, поэтому я отправляю свою невероятную попытку и угадываю, на что будут делать ставки другие боты.
Изменить 1: Добавил еще 1 к первой ставке, просто чтобы уменьшить вероятность ничьей с другими людьми, ставками 51.
Редактировать 2: Украл первый ход бота саркомы, так как у него были хорошие шансы на то, что он не будет последовательно устранен.
Редактировать 3: Бот выживает очень хорошо в первом раунде, но он легко уничтожается на более поздних этапах. Изменилось то, как робот думает о втором раунде, теперь, когда половина игроков мертва в воде.
Изменить 4: Теперь, когда первый раунд хорош, я изменил способ обработки второго раунда. Много умираю во втором раунде, поэтому мне нужно как-то выжить.
Кровавый бот
Сделал жаждущий бот в поисках убийства. Идея состоит в том, чтобы попытаться выиграть у ботов с низкими ставками, и после того, как они закончат кровопролитие в первом раунде, их нельзя остановить, поскольку у них должно быть огромное количество HP, чтобы превзойти врагов.
источник
meh_bot
Просто поставьте чуть больше половины своего л.с.
MehBot 20
Mehran
источник
Робби рулетка
Этот бот делает простой анализ истории вражеского бота, в противном случае получает половину оставшихся очков жизни.
источник
Ставка выше, чем меньше у вас конкуренции. Спасибо комментаторам за предложения по улучшению.
источник
SurvivalistBot и HalvsiesBot
Спасибо, что ответили на мои вопросы. Конечный результат - более сложный бот.
HalvsiesBot - это причудливый бот «просто держи половину» с вероятностью 50/50 на победу. Я полагаю.
SurvivalistBot принимает серию решений if-else бинарного дерева, основываясь на наборе данных, включая переопределение связи (если он достигнет 2 связей, то это камикадзе, чтобы избежать смерти тройной связи).
Мой питон немного ржавый, поэтому код может быть немного глючным, поэтому не стесняйтесь исправлять или обновлять его.
Он создан для того, чтобы попытаться обработать биты данных, чтобы сделать вывод о том, сколько HP осталось, минимальное количество ботов, с которыми он может сражаться, минимальное количество HP, которое нужно оставить, средняя ставка. Он также использует рандомизацию в неоднозначных ситуациях, таких как открытие игры или вопросы оптимальных ставок.
BoxBot
источник
Opponent_Average_Bid = Opponent_Remaining_HP / float(len(history)) ZeroDivisionError: float division by zero
, Эта строка должна обрабатывать случай истории 0 длины.else
,math.[func] -> np.[func]
и в какой -то момент вы используете ,Lowest
где вы имеете в видуLowestBid
. Все исправлено в контроллере на github и оценки обновляются в ближайшее время.Расчет бот
Агрессивный расчетливый бот
Anti Kick Bot
Если мы можем предсказать действия противника, мы можем сделать оптимальные ставки! Если мы не можем (недостаточно данных или оппонент слишком случайный), то мы можем, по крайней мере, сделать то, что максимизирует наш потенциал выигрыша. Теоретически, по крайней мере, половина числа живых ботов умрет в каждом раунде. Таким образом, я могу ожидать, что будет не более log2 (живых) раундов. В идеале мы бы равномерно распределяли наши лс между всеми раундами. Тем не менее, мы знаем, что некоторые боты будут глупыми и самоубийцами / умрут рано, поэтому мы должны ставить чуть больше в ранних раундах.
Код вычисляющего бота для Агрессивного вычисляющего бота модифицирует его, чтобы попытаться остаться в живых, будучи более агрессивным, за счет долговременного здоровья. Только симуляции покажут, победит ли темп или значение.
Anti Kick Bot всегда должен побеждать нынешнего лидера KickBot: P
РЕДАКТИРОВАТЬ: Заменили детерминированного бота на Anti Kick Bot, более умного бота с почти такими же возвращаемыми значениями. Также мешало голосовать больше, чем противникам HP
источник
return np.max(theoreticalBet, hp - 1): AxisError: axis 23 is out of bounds for array of dimension 0
. Я разместил ссылку на контроллер, чтобы вы могли проверить это.GenericBot
Уже поздно ... Я устал ... не могу придумать имени ... и формат этого бота действительно похож на другие, только с немного другим алгоритмом, заданным историей. Он пытается получить текущую ставку противника на азартные игры ... или что-то в этом роде ... zzz
источник
np.maximum
вместоnp.max
, то же самое дляmin
HalflifeS3
источник
Берег бот [пенсионер]
Постараюсь пройти путь через соревнование, равномерно разделив его hp между раундами. Поставит цену любому оставшемуся л.с. в первом раунде, чтобы дать себе больше шансов попасть в раунды "на побережье".
Coast Bot V2
Поскольку мне очень нравится этот вызов, мне просто нужно было создать еще одного бота. Эта версия жертвует некоторыми из своих более поздних хп, используя больше хп в первых двух раундах.
Процент бот
Пытается рассчитать средний процент л.с., который тратит противник, и ставки, основанные на этом.
источник
ConsistentBot
Ставки одинаковые в каждом раунде. Вероятность того, что он выживет в первых раундах, невелика, но если ему посчастливится дойти до конца, у него все равно должно остаться достаточное количество HP.
источник
Кикбан Бот
Этот бот просто пытается противостоять нынешнему лидеру Mean Kickbot, обыгрывая его в первом раунде и после этого играя более агрессивно, если узнает его.
источник
Три четверти бот
Он не собирается бить MehBot или SarcomaBot (s), но я думаю, что он делает это довольно хорошо. Когда я впервые увидел вызов, это было первое, что пришло мне на ум: всегда ставить три четверти своего здоровья, если нет причин для этого.
* после первого раунда.
Четыре Седьмых Бот
После умеренного успеха бота 3/4 в городе появилась новая фракция, это только рационально.
Идеальная фракция
Я целая
источник
BandaidBot
BandaidBot хочет, чтобы все хорошо играли! Если его противник был хорошим в последнем раунде, он жертвует собой, чтобы стимулировать хорошее поведение в других. Если его противник в последнем раунде был злым, он нанесет как можно больше урона своему противнику, пожертвовав собой в случае необходимости. Он назначает треть своего л.с., если у него нет истории для работы. (Я надеюсь, что этот бот будет иметь интересные волновые эффекты на других стратегиях, не настолько, чтобы у этого бота был высокий коэффициент выигрыша. Было бы забавно иметь пару таких в игре)
GetAlongBot
GetAlongBot будет так же хорош, как и должен использовать BandaidBot. Он вернет чуть менее трети своего здоровья, если не сможет убить своего противника за меньшее время. Если его оппонент выглядит как BandaidBot, он будет делать ставку 2, зная, что BandaidBot будет делать ставку 1, потому что GetAlongBot так хорошо ладил со всеми остальными - легкая победа, если это действительно был BandaidBot на другом конце.
источник
return np.random.randint(history[-1], hp/2): ValueError: low >= high
этот случай должен быть как-то обработанTENacious бот
Этот бот пытается удержать свое любимое значение 10, но он иногда меняет свой выбор, если необходимо разорвать ничью (с его любимым значением, удвоенным или увеличенным в четыре раза) или сохранить для будущих раундов, но не оптимальной суммой, потому что он хочет запутать оппонентам, и он не хочет рассматривать ставку менее 2 в любое время, так как убежден, что это гораздо лучше, чем надеяться, что оппонент сделает ставку менее 1, то есть 0.
PS: у этого бота могут быть стратегические проблемы, если ботов больше чем 2 ^ 9.
источник
CautiousBot
Первая в истории Пазлы для программирования! Нашел свой вызов довольно интересным: P
Если в последнем раунде бит на единицу меньше, чем лс, если история не ставит половину лс плюс небольшую случайную сумму
Если история проверяет hp противника и количество оставшихся раундов и пытается превзойти hp / 2 противника, используя дополнительный буфер до доли оставшегося hp, деленной на количество оставшихся раундов (он пытается каким-то образом сохранить оставшийся hp для последующих раундов) , Проверьте, не тратите ли вы слишком много здоровья (не убивайте себя и не ставьте больше, чем ваш противник).
Всегда поправляйте галстуки, как это делают другие боты.
CautiousBot2
Слишком агрессивен в первых раундах, теперь CautimsBot становится еще более осторожным ...
источник
buffer_bet = np.random.randint(0, buffer) if buffer > 0 else 0 File "mtrand.pyx", line 993, in mtrand.RandomState.randint ValueError: low >= high
. Обратите внимание, что буфер - это ключевое слово в Python, вы можете выбрать другое имя переменной.buff_bet = np.random.randint(0, buff) if buff > 0 else 0 File "mtrand.pyx", line 993, in mtrand.RandomState.randint ValueError: low >= high
. Кажется, что бафф иногда представляет собой число с плавающей запятой между 0 и 1, которое предположительно получает внутри 0randint
. Это работает , если вы накладываетеbuff
наint
перед вызовомceil
возвращаетfloat
. Пропустил тот ... Ты снова: PХорошо, я попробую свои силы в этом.
SnetchBot
Проверка доли здоровья, с которым шел оппонент. Если противник делал рейз, побейте его этим.
РЕДАКТИРОВАТЬ: потерять много в первом раунде, скорректированы случайные пределы первого хода
источник
SquareUpBot
Не похоже, чтобы многие боты играли с силами вместо фракций, поэтому я решил сделать один с некоторыми стандартными оптимизациями и посмотреть, где я буду размещать. Довольно упрощенно.
Также пытается определить, не пытается ли вражеский бот использовать некоторую постоянную дробь, потому что полномочия > дроби .
РЕДАКТИРОВАТЬ: я дурак, и мой детектор фракций не может работать. Ремонт сейчас.
источник