Несколько алгоритмов для игры Камень, ножницы, бумага
- asd3626
- 3 дек. 2017 г.
- 2 мин. чтения

Уверен каждый играл, а многие еще и разрешали серьезные споры игрой Камень, ножницы, бумага.
Нопомню правила (из Википедии: https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BC%D0%B5%D0%BD%D1%8C,_%D0%BD%D0%BE%D0%B6%D0%BD%D0%B8%D1%86%D1%8B,_%D0%B1%D1%83%D0%BC%D0%B0%D0%B3%D0%B0 )
Игроки считают вместе вслух «Камень… Ножницы… Бумага… Раз… Два… Три»[1], одновременно качая кулаками. На счёт «Три» они одновременно показывают при помощи руки один из трёх знаков: камень, ножницы или бумагу.
Знаки изображены на картинке.
Победитель определяется по следующим правилам:
Камень побеждает ножницы («камень слишком крепок для ножниц»)
Бумага побеждает камень («бумага накрывает камень»)
Ножницы побеждают бумагу («ножницы разрезают бумагу»)
Если игроки показали одинаковый знак, то засчитывается ничья и игра переигрывается.
В классическом варианте в игру играют вдвоём, однако возможна игра большего количества участников. При этом ничья засчитывается в ситуации, когда в компании игроков появились все три жеста (это иногда называют «кашей»)
Всё началось с того, что я сильно проигрывал эту игру своей жене, а она разгадала тайну моего рандома. Я очень рассердился и решил, что в этой интеллектуальной схватке я не сдамся.
После нескольких попыток разгадать ее последовательность, я понял, что часто после Камня, у нее выпадает Ножницы, после Ножницы - бумага и т.д. несколько маленьких последовательностей я заметил. Далее попробовал пару простых алгоритмов, которые помогли мне собрать с нее статистику
и
а так же для рандомного хода.
Написав их, я уверенный, что разгадал последовательность жены, попросил её поиграть с компьютером. После нескольких ходов, жена уже поняла алгоритм работы и поиздевалась над ними, нанеся мне немыслимые душевные раны.
Были и приятные новости. Теперь у меня была статистика её ходов, хоть и не много, но что то.
где k - камень, n - ножницы, b - бумага.
На самом деле статистики было чуть больше, но взял эту для краткости.
Далее я попробовал натравить на жену её же статистику
Это было уже немного получше, но после непродолжительной схватки, жена всё же разгада и эту последовательность. Слишком умная жена не дает мне покоя, и я решил, что если я с ней не справлюсь, то пускай это делает компьютер. Дальнейшие поиски решения задачи привели меня к тому, что алгоритм должен самообучаться. Поразмыслив в этом наравлении , пришел к тому, что буду использовать приоритеты. Не хочу заморачиваться с нейронными сетями.
Далее попытка реализовать такой самоообучающийся алгоритм.
Код
Если хватит энтузиазма, продолжу поиски лучшего решения на следующий выходных. А пока вот
Пока.
Комментарии