Automatic prediction of player choice
Алгоритм, который противостоит человеку, и на основе ходов пытается предсказать
следующих ход человека.
Игрок загадывает один из двух вариантов, а робот пытается его угадать.
Если программе удалось угадать, то игрок теряет очко.
Если программа не смогла предсказать выбор человека, то игрок зарабатывает очко.
Алгоритм реализован на основе описания. В процессе реализации алгоритм слегка изменился.
В отличие от описания, здесь можно дополнительно указать количество вариантов.
С двумя вариантами будет игра “Чет - нечет”, а с тремя - “Камень, ножницы, бумага”.
Интересно то, что программу сложно обыграть. Игрок пытается обставить робота, но все равно
делает свои ходы не случайно. Именно эта “неслучайность” позволяет быстро приспосабливаться и эффективно
противостоять игроку.
Более подробно о гадалке и алгоритме можно прочитать на сайте ltwood.
import Predictor from "predictor";
// Создание гадалки
const predictor = new Predictor(config);
// Передача значения, которое выбрал пользователь,
// и получение предсказание для этого значения
const prediction = predictor.pass(1);
// Получение текущего счета
const score = predictor.score;
// Получение количества сделанных ходов
const sc = predictor.stepCount();
config.base
- количество вариантов хода. Число большее 2.config.daemons
- настройка списка демонов.config.daemons.human
- количество анализируемых ходов человека,config.daemons.robot
- количество анализируемых ходов робота,config.daemons.epsilon
- вес вознаграждения правильного ответа.config.supervisor_epsilon
- вес вознаграждения демона за правильный ответ.
tools/build-docker
tools/npm run build
tools/npm run test