Сканирующая бумага

В моей школе наш учитель проводит конкурс ботов, рок, бумага, ножницы. Я знаю, как программировать на Python, но я понятия не имею, как программировать бота, который имел бы больше шансов на успех, чем тот, который случайно выбирает свое оружие. Я думаю, что можно сохранить все предыдущие шаги, а затем искать шаблоны, чтобы бросить вызов атакам. Я иду в правильном направлении? Любые идеи?

Ответ 1

Для скальных газетных ножниц доказано, что случайный бот будет в медиане каждого ранга. Итак, я бы создал набор ботов, каждый из которых вычислял одну эвристику и работал на фоне параллельно. За каждый ход каждый бот будет фактически "рисовать" и проверять, выиграл ли он или проиграл - если бы он сыграл этот ход. Каждый бот будет отслеживать, сколько игр он выиграл бы, если бы он играл, и сколько бы он потерял.
Один из этих ботов будет случайным злоумышленником.

Каждый раз, когда настала ваша очередь: выберите, какой бот выиграл дольше [жадный] - и используйте его.

Используя этот подход, вы гарантируете, что находитесь в верхней медианной области вашего класса! [с достаточным количеством раундов игр, конечно]

Ответ 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 получает огромное преимущество.