# Электронная гадалка [![CircleCI](https://circleci.com/gh/anwinged/predictor/tree/master.svg?style=svg)](https://circleci.com/gh/anwinged/predictor/tree/master) [Демоверсия][demo] Алгоритм, который противостоит человеку, и на основе ходов пытается предсказать следующих ход человека. Игрок загадывает один из двух вариантов, а робот пытается его угадать. Если программе удалось угадать, то игрок теряет очко. Если программа не смогла предсказать выбор человека, то игрок зарабатывает очко. Алгоритм реализован на основе [описания][algorithm]. В процессе реализации алгоритм слегка изменился. В отличие от описания, здесь можно дополнительно указать количество вариантов. С двумя вариантами будет игра "Чет - нечет", а с тремя - "Камень, ножницы, бумага". Интересно то, что программу сложно обыграть. Игрок пытается обставить робота, но все равно делает свои ходы не случайно. Именно эта "неслучайность" позволяет быстро приспосабливаться и эффективно противостоять игроку. Более подробно о гадалке и алгоритме можно прочитать на сайте [ltwood][about]. ## Использование ```javascript 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 [algorithm]: https://sites.google.com/site/ltwood/projects/heshby/algorithm [demo]: https://vakhrushev.me/articles/2019-05-01-predictor/ [about]: https://sites.google.com/site/ltwood/projects/heshby