From d12f9cbac2f3075d81ccedc9de3f979ae563836f Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Sat, 30 Jun 2018 17:56:07 +0300 Subject: [PATCH] Update readme --- README.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 57 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 4b3c4ba..259da1b 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,62 @@ -# Гадалка +# Электронная гадалка -Вариант электронной гадалки Шеннона, реализованный на основе -[описания алгоритма](https://sites.google.com/site/ltwood/projects/heshby/algorithm). +[Демоверсия][demo] -Игрок задаывает один из двух вариантов, а программа пытается его угадать. -Если программе удалось угадать, то игрок теряет очко. +Алгоритм, который противостоит человеку, и на основе ходов пытается предсказать +следующих ход человека. + +Игрок загаывает один из двух вариантов, а робот пытается его угадать. +Если программе удалось угадать, то игрок теряет очко. Если же программа не смогла предсказать выбор человека, то игрок зарабатывает очко. -Интересно то, что программу невероятно сложно обыграть. Кажется, что игрок выбирает вариант хода случайно, -но на самом деле его выбор можно предсказать на основе прошлых ходов. +Алгоритм реализован на основе [описания][algorithm]. В процессе реализации алгоритм слегка изменился. +В отличие от описания, здесь можно допольнительно указать количество вариантов. +С двумя вариантами будет игра "Чет - нечет", а с тремя - "Камень, ножницы, бумага". -* Более подробно о гадалке и алгоритме можно прочитать -на сайте [ltwood](https://sites.google.com/site/ltwood/projects/heshby). -* [Демоверсия](http://vakhrushev.me/projects/predictor/) +Интересно то, что программу сложно обыграть. Игрок пытается обставить робота, но все равно +делает свои ходы не случайно. Именно эта "неслучайность" позволяет быстро приспосабливаться и эффективно +противостоять игроку. + +Более подробно о гадалке и алгоритме можно прочитать на сайте [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](http://vakhrushev.me/projects/predictor/) +[about](https://sites.google.com/site/ltwood/projects/heshby)