- PVSM.RU - https://www.pvsm.ru -

Полгода назад я написал пост о моем интересе к упражнениям для тренировки мозга [1], результатом которого был небольшой сайт с такого рода упражнениями [2], созданный для всех желающих вступить на путь когнитивного просветления. Так как сайт делался с оглядкой на десктопные игры и приложения, то и получился он по сути таким приложением только в вебе. Но недавно было решено исправить этот маленький недостаток и добавить какое то взаимодействие между пользователями сайта, в надежде что кому то это сможет придать дополнительную мотивацию к тренировокам. Первое что приходит в голову это конечно же система соревнований.
Сначала были попытки найти сторонний сервис который можно было бы по быстрому прикрутить, но все что я нашел, было заточено под казуальный игры с простой системой единой таблицы результатов и щепоткой ачивок. Мне же хотелось что бы из коробки было разделение пользователей по скиллу(достаточно стандартная практика, например в таких играх как LoL и SC2), ведь если участвую сто человек, то очевидно кто то окажется на сотом месте, и возможно будет себя чувствовать не очень комфортно, смотря на топ десять с результатами в разы больше чем у него. Следовательно нужен механизм для разделение на меньшие группы равных по силе. В итоге пришлось писать самому.
Я не стал слишком мудрствовать и выискивать какие то хитроумные алгоритмы под эту задачу. Раз нужно разбить на однородные группы, значит получаем стандартную задачу кластерного анализа, берем алгоритм k-means и получаем разбиение. Единственная проблема которая тут возникает, это то что слишком хороший и слишком плохой результат могут под себя отхватить целую группу. Так же идем от простого и причисляем эту задачу к известной проблеме в статистике, проблема обнаружения выбросов, берем простейший алгоритм для их нахождения, и перед использованием кластеризации, отсекаем эти результаты и автоматом зачисляем соответственно в лучшую и худшую группу.
Итого, имеем горизонтальное разбиение. Далее можно было бы систему улучшить за счет добавления еще и вертикального разбиения, которое бы решило проблему слишком большого количества одинаковых результатов. То есть, вместо того что бы иметь одну группу с результатами 1 1 1 2 2 2 3 3 3, лучше что бы было три равноправные группы 1 2 3, 1 2 3, 1 2 3. Но так как участников пока не очень много, и проблема не стоит столь остро, было решено эту модернизацию отложить до лучших времен.
Статичный список из топа, мне показался менее интересным чем постоянный обновляющийся, поэтому был выбран формат еженедельных соревнований. И так как тренировки приносят наибольшую пользу при их регулярности, неплохо было бы как то простимулировать человека что бы он и на следующий день зашел на сайт и с новыми силами сделал попытку, поэтому было решено обновлять позиции и лиги один раз в день.
Итого получилась такая вот не хитрая система. Принимайте участие и оставляйте фидбеки.
ru.brainexer.com/contests.html [3]
Автор: dotneter
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/gtd/33762
Ссылки в тексте:
[1] пост о моем интересе к упражнениям для тренировки мозга: http://habrahabr.ru/post/155859/
[2] небольшой сайт с такого рода упражнениями: http://ru.brainexer.com
[3] ru.brainexer.com/contests.html: http://ru.brainexer.com/contests.html
[4] Источник: http://habrahabr.ru/post/178927/
Нажмите здесь для печати.