Update readme
This commit is contained in:
parent
86da536acd
commit
d12f9cbac2
67
README.md
67
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)
|
||||
|
Loading…
Reference in New Issue
Block a user