Алгоритм, который противостоит человеку, и на основе ходов пытается предсказать следующих ход человека.
Игрок загадывает один из двух вариантов, а робот пытается его угадать. Если программе удалось угадать, то игрок теряет очко. Если программа не смогла предсказать выбор человека, то игрок зарабатывает очко.
Алгоритм реализован на основе описания. В процессе реализации алгоритм слегка изменился. В отличие от описания, здесь можно дополнительно указать количество вариантов. С двумя вариантами будет игра "Чет - нечет", а с тремя - "Камень, ножницы, бумага".
Интересно то, что программу сложно обыграть. Игрок пытается обставить робота, но все равно делает свои ходы не случайно. Именно эта "неслучайность" позволяет быстро приспосабливаться и эффективно противостоять игроку.
Более подробно о гадалке и алгоритме можно прочитать на сайте 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