В моей школе наш учитель проводит конкурс ботов, рок, бумага, ножницы. Я знаю, как программировать на Python, но я понятия не имею, как программировать бота, который имел бы больше шансов на успех, чем тот, который случайно выбирает свое оружие. Я думаю, что можно сохранить все предыдущие шаги, а затем искать шаблоны, чтобы бросить вызов атакам. Я иду в правильном направлении? Любые идеи?
Сканирующая бумага
Ответ 1
Для скальных газетных ножниц доказано, что случайный бот будет в медиане каждого ранга.
Итак, я бы создал набор ботов, каждый из которых вычислял одну эвристику и работал на фоне параллельно. За каждый ход каждый бот будет фактически "рисовать" и проверять, выиграл ли он или проиграл - если бы он сыграл этот ход. Каждый бот будет отслеживать, сколько игр он выиграл бы, если бы он играл, и сколько бы он потерял.
Один из этих ботов будет случайным злоумышленником.
Каждый раз, когда настала ваша очередь: выберите, какой бот выиграл дольше [жадный] - и используйте его.
Используя этот подход, вы гарантируете, что находитесь в верхней медианной области вашего класса! [с достаточным количеством раундов игр, конечно]
Ответ 2
Если вы играете против людей, вы на правильном пути. Сохранение предыдущих шагов является ключевым. Вот две статьи, которые окажутся полезными для вас. Как победить в скале, бумаге, ножницах. И запись в wikipedia в стратегия и алгоритмы.
Ответ 3
Если это ваше школьное задание, его можно считать обманом, поскольку все представленные источники являются общедоступными. Но, опять же, они доступны и другим студентам.
Ответ 4
Где может быть какая-то потенциальная прибыль при попытке выяснить стратегии других ботов, например, если это будет принудительное участие, будет какой-то ленивый студент, который составит бота, который всегда будет бросать ножницы.
Я предлагаю другую стратегию (я слышал об этом на каком-то подобном конкурсе, но больше не могу отслеживать источник), предположим, что вы можете позволить нескольким ботам работать (если нет, сотрудничать с некоторыми из ваших одноклассников для запуска этого стратегия).
Скажем, у вас есть 4 бота A, B, C, D
Представьте, что каждый бот играет 100 раз против других. Пусть ваши B, C, D боты играют за первое, пусть говорят 10 раз, играют стратегию, которая позволила бы признать ее как бот из вашей команды, скажем "RPPSPPSSRS", пусть ваш бот сыграет какую-то другую стратегию, которая позволила бы ее распознать ботами B, C, D.
Затем в следующем 90 раунде пусть боты B, C, D теряют ( "бумагу" ) на A и играют случайным образом против других. Пусть бот A победит ( "ножницы" ) из B, C, D и сыграет случайным образом против других.
Таким образом, бот A получает огромное преимущество.