项目作者: anwinged

项目描述 :
Automatic prediction of player choice
高级语言: TypeScript
项目地址: git://github.com/anwinged/predictor.git
创建时间: 2018-05-21T05:09:33Z
项目社区:https://github.com/anwinged/predictor

开源协议:

下载


Электронная гадалка

CircleCI

Демоверсия

Алгоритм, который противостоит человеку, и на основе ходов пытается предсказать
следующих ход человека.

Игрок загадывает один из двух вариантов, а робот пытается его угадать.
Если программе удалось угадать, то игрок теряет очко.
Если программа не смогла предсказать выбор человека, то игрок зарабатывает очко.

Алгоритм реализован на основе описания. В процессе реализации алгоритм слегка изменился.
В отличие от описания, здесь можно дополнительно указать количество вариантов.
С двумя вариантами будет игра “Чет - нечет”, а с тремя - “Камень, ножницы, бумага”.

Интересно то, что программу сложно обыграть. Игрок пытается обставить робота, но все равно
делает свои ходы не случайно. Именно эта “неслучайность” позволяет быстро приспосабливаться и эффективно
противостоять игроку.

Более подробно о гадалке и алгоритме можно прочитать на сайте ltwood.

Использование

  1. import Predictor from "predictor";
  2. // Создание гадалки
  3. const predictor = new Predictor(config);
  4. // Передача значения, которое выбрал пользователь,
  5. // и получение предсказание для этого значения
  6. const prediction = predictor.pass(1);
  7. // Получение текущего счета
  8. const score = predictor.score;
  9. // Получение количества сделанных ходов
  10. const sc = predictor.stepCount();

Конфигурация

  • config.base - количество вариантов хода. Число большее 2.
    Чем больше вариантов, тем больше ходов алгоритм тратит на приспособление к ходам человека.
  • config.daemons - настройка списка демонов.
    • config.daemons.human - количество анализируемых ходов человека,
    • config.daemons.robot - количество анализируемых ходов робота,
    • config.daemons.epsilon - вес вознаграждения правильного ответа.
  • config.supervisor_epsilon - вес вознаграждения демона за правильный ответ.

Сборка

  1. tools/build-docker
  2. tools/npm run build

Тестирование

  1. tools/npm run test