Рок ножницы бумага бот алгоритм



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

800   4  

4 ответов:

Доказано для rock-paper-scissors, что случайный ботбудет находиться в медиане каждого ранга . Поэтому я бы создал набор ботов, Каждый из которых вычисляет одну эвристику и работает в фоновом режиме параллельно. Для каждого хода каждый бот будет фактически "рисовать" и проверять, выиграл он или проиграл - если бы он сыграл этот ход. Каждый бот будет отслеживать, сколько игр он выиграл бы, если бы играл, и сколько бы он проиграл.
один из этих ботов будет случайным атакующий.

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

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

Если вы играете против людей, вы на правильном пути. Хранение предыдущих ходов является ключевым. Вот две статьи, которые окажутся полезными для вас. Как выиграть у камня, бумаги, ножниц . И запись Википедии о стратегии и алгоритмах .

Rock Paper Scissors Programming Competition site содержит большое количество конкурирующих программ (они даже написаны на python).

Если это ваше школьное задание, оно может считаться мошенничеством, потому что все представленные источники являются общедоступными. Но, опять же, они доступны и другим студентам.

Где может быть некоторая потенциальная прибыль в попытке выяснить стратегии других ботов, например, если это принудительное участие, будет какой-то ленивый студент, который создает бота, который всегда будет бросать ножницы.

Я предлагаю другую стратегию (я слышал о ней на каком-то подобном конкурсе, но больше не могу отслеживать источник), предположим, что вы могли бы позволить нескольким ботам работать (если нет, сотрудничать с некоторыми из ваших одноклассников, чтобы запустить эту стратегию).

Давайте допустим, у вас есть 4 бота A, B, C, D

Представьте, что каждый бот играет 100 раз против других. Пусть ваша Б,С,Д боты играют за первые скажем 10 раз играть в стратегии, которые позволили бы признать его в качестве бота из своей команды, сказать 'RPPSPPSSRS', пусть ваш бот играть в некоторые другие стратегии, которые бы позволили быть признаны ботов В,С,D.

Затем, в следующем раунде 90 пусть боты B,C,D проигрывают ("бумажные") A и играют случайным образом против других. Пусть бот a выиграет ("ножницы") от B, C, D и играть против других.

Таким образом, бот а получает огромное преимущество.

Comments

    Ничего не найдено.