Мы в Хекслете любим не только учиться и учить, но и развлекаться. Но развлекаться по-своему, по-программерски. Поэтому мы запустили Codebattle. Это игра для программистов.
Идея очень простая: вам и сопернику дается задача, вы решаете ее на выбранном вами языке. Вы видите код соперника в реальном времени, результаты запуска тестов и можете общаться с ним и зрителями в чате. Кто первый решит задачу (удовлетворит тестам) — тот победил.
Сейчас доступны на выбор JavaScript, PHP, Python и Ruby. Можно создавать игру самому и ждать соперника (или послать ссылку кому-нибудь конкретному), а можно вступать в открытые игры. В запущенную игру можно зайти в качестве зрителя. Чтобы следить за открытыми играми без посещения сайта, можно установить расширение для Chrome.
Если интересно, мы можем отдельно рассказать про бэкэнд. Там используется Erlang, а тесты пишутся на Clojure. Потом они трансформируются в тесты на всех целевых языках с помощью нашей библиотеки multicode.
Сами задачи тоже лежат на Гитхабе, можно делать пулл-реквесты и добавлять новые задачи (заодно попрактиковаться с Clojure).
В бой!
Комментарии (57)
avdept
07.10.2015 15:22+4Че за фигня, я набираю код, результат почти готов — потом бах, весь мой код пропадает и остается стандартная заготовка(задание)
nxsofsys
07.10.2015 15:34Я бы хотел в таких местах авторизовываться через гугл.
freetonik
07.10.2015 15:44+3Добавим в родмап на будущее. Пока там есть самые программерские альтернативы: github и bitbucket.
splav_asv
07.10.2015 15:57+11Вам не кажется, что ваши запросы при авторизации через bitbucket не слишком скромные?
Hexlet_production is requesting access to the following:
Read and write to your team membership information
Read and write to your repositories' issues
Read and write to your snippets
Read and write to your repositories and their pull requests
Read and write to your repositories' webhooks
Administer your repositories
Read and write to your repositories' wikis
Read and write to your account information
Read/write your team's projects and move repos between themfreetonik
07.10.2015 16:24+3Да, это для авторов уроков (которые публикуют упражнения через битбакет).
Делаем отдельный вход для них.
Lexx918
07.10.2015 16:02+3Очень сыро и глючно. Попасть в просмотр игры можно далеко не с первого клика (выбрасывает на список). Попробовал войти как игрок, выкинуло на главную. Список игр на главной то пуст, то хаотично обновляется.
Оба участника видят код друг друга? Не круто ж совсем. Подсматривать можно :)
Обязательно добавьте сравнение ещё и по скорости выполнения и по объёму отжираемых ресурсов. И по объёму кода (гольферы порадуются).
А ваще круто! Спс!toxicmt
07.10.2015 16:09+3«Не круто ж совсем. Подсматривать можно :)» В этом один из смыслов.
Urvin
07.10.2015 16:12+1Так пока запущенный мной интерпретатор думает и вылетает, мой оппонент спокойно списывает мою задачу и становится победителем.
toxicmt
07.10.2015 16:14Ну так это просто бага, которую мы поправим. Главная идея батла была именно в том чтобы видеть код, это в первую очередь обучающая игра с элементами фана.
Zibx
07.10.2015 16:03+2Добавьте скрытые проверки. Выпилите половину стандартной библиотеки для всех языков. Заходить в чужую игру почти никогда не получается. Когда получается — при попытке написать комментарий текст пропадает при каждом вводе новой буквы участниками.
Сервер не тянет нагрузку, это можно решить перетащив исполнение на клиент. На сервер отдавать только в случае успеха на клиенте для валидации победы.
m0sk1t
07.10.2015 16:07+1Ваще не круто… Написал пару заданий, в итоге застопорился на мелочах, а тем временем соперник практически слизал код, пошаманил и победил… Сделайте так чтобы код открывался в конце! А ещё задания — не всегда можно интуитивно понять что требуется, приходится гадать по ассертам… Ну и выше уже написали глюки, не мешало бы проверять прежде чем выкладывать.
m0sk1t
07.10.2015 16:26+1Расширение для хрома выдало: Could not install package: 'UTILITY_PROCESS_CRASHED_WHILE_TRYING_TO_INSTALL'. Could not install package because a utility process crashed. Try restarting Chrome and trying again.
Chromium 45.0.2454.101 Built on Ubuntu 14.04, running on LinuxMint 17.1
prog666
07.10.2015 16:30При попытке создать игру получаю ERR_EMPTY_RESPONSE. Думал отвиснет, но пол часа ничего не меняется.
PikselNsk
07.10.2015 19:36+5По-моему в вашу игру уже один из ваших же стажеров играет… game.hexlet.io
justaguest
07.10.2015 19:56+1Судя по главной странице, пока поддерживаются только ruby, php, python и JS? Было бы круто еще Haskell добавить.
Wesha
08.10.2015 00:31+9Победа легко достигается «индийским методом» (называю так потому, что, в моей практике, написанный индусами код, как правило, работает именно таким образом):
def separate with commas(n) case n when "1000" then "1,000" when "10000" then "10,000" when "100000" then "100,000" when "1000000" then "1,000,000" else n end end
Все тесты удовлетворены, я победил. Мозг не напрягался ;)Jazzis
08.10.2015 06:57Имеет смысл тогда ещё добавить скрытые тесты, как на том же codewars.com :)
Wesha
08.10.2015 20:14А вообще люблю ruby. Любая задача решаема в одну строчку :)
"1234567890".reverse.unpack('A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3').reject{|s| s == ''}.join(",").reverse
Delphinum
Напоминает школьные олимпиады по программированию. Не люблю олимпиады.
freetonik
Это скорее ката, чем школьные олимпиады.
Delphinum
А разница?
EndUser
В олимпиадах задачки заковыристые (и уникальные, чтобы не нагуглить решение).
Ката в восточных единоборствах стандартное упражнение для оттачивания моторики.
Они развивают разные органы: олимпиада — изобретательность, ката — автоматизм.
Delphinum
То есть в предложенной игре два программиста будут функцию факториала кодить? Сомневаюсь. Кто будет в это играть, если задачки там будут не заковыристые?
EndUser
Я в codebattle не входил. Зрители не предусмотрены, а авторизоваться я не решил. Не в курсе чего там.
Я раскрыл коммент freetonik настолько, насколько я его понял.
Кстати, по адресу freetonik есть несколько таких же по замыслу сайтов, что и описываемый в текущей теме.
Delphinum
Понял, спасибо.
toxicmt
Зрители предусмотрены, но на текущий момент требуется авторизация.