Хочу рассказать про замечательный сайт codefights.com. Судя по тому, что Россия занимает 3 место в рейтинге стран за последнюю неделю, он достаточно известен, однако я не нашел упоминаний о нем на Хабре и решил исправить это.
Как следует из названия тут можно сражаться решая задачи. Бой состоит из трех раундов. Каждый раунд это либо программа с багом в одной строчке, либо с пропущенной строкой или с несколькими строками кода, который вам предстоит дописать самому. Также бывают задачи, где вам необходимо реализовать алгоритм, исходя из описания.
За правильный ответ зачисляются очки в зависимости от времени потраченного на решение и того, сколько раз вы прогоняли тесты, чтобы проверить свой код. Можно сразу отправить задачу, но тогда за неправильный ответ очки снимаются. По результатам боя вам начисляются XP (Earning Experience Points), которые повышают ваш уровень в игре. Всего 6 основных уровней — Recruit, Trainee, Soldier, Warrior, Capitain, Ninja и еще много разных бейджей и ачивок которые даются за количество побед, стиль игры и тому подобное.
На данный момент поддерживаются C++, Java, JavaScript и Python. Условия задач только на английском, но через пару дней игры задача воспринимается сразу чуть ли не на подсознательном уровне, так что в каком-то смысле это и хороший способ прокачать свой английский именно в предметной области. Еще, конечно, есть и общеобразовательный фактор, второй раз проиграв из-за задачки с алгоритмом Дейкстры, возникает желание основательно разобраться что к чему раз и навсегда. Уровень сложности задач возрастает согласно уровню играющего, так что интересно будет и новичкам, и гуру.
Играть можно как с друзьями, «вызывая» их на бой, так и со случайными соперниками. То есть вы решаете одну и ту же задачу параллельно, каждый на своем любимом языке программирования. Есть боты разной степени сложности, играя с которыми можно потренироваться. Причем только после победы над текущим станет возможно сражаться со следующим.За победы над ботами также начисляются очки XP.
Недавно появился UberBot, победив которого, как говорят, можно получить приглашение на собеседование в Убер, задачки там чуть сложнее обычных, и оформлены в тематике компании.
Еще есть возможность решать и публиковать челенджи, за решение которых можно получить монеты для покупки жизней (каждый бой одна жизнь, жизни восстанавливаются раз в час). При этом соревнование идет в количестве символов написанной программы (это на мой взгляд не совсем корректно, т.к. оценка эта, исходя из особенностей языка при одном и том же алгоритме очень сильно разнится). Однако справившись с решением вы получите монеты вне зависимости от длины программы.
Раз в месяц проходят большие турниры — марафоны. Небольшие турниры на четыре человека проходят несколько раз в день. Все участники скидываются по одинаковой сумме монет, играют на вылет, победитель получает все.
Вся платформа, если верить разработчикам, написана на meteorJS и использует mongoDB.
В общем, играть весело и интересно, рассказывать тут сложно, надо пробовать. Можно устраивать баталии или целые турниры среди коллег и друзей.
Желаю побед и открытий!