Codebattle: игра для программистов

    Привет, Хабрахабр!

    Мы в Хекслете любим не только учиться и учить, но и развлекаться. Но развлекаться по-своему, по-программерски. Поэтому мы запустили Codebattle. Это игра для программистов.

    Идея очень простая: вам и сопернику дается задача, вы решаете ее на выбранном вами языке. Вы видите код соперника в реальном времени, результаты запуска тестов и можете общаться с ним и зрителями в чате. Кто первый решит задачу (удовлетворит тестам) — тот победил.



    Сейчас доступны на выбор JavaScript, PHP, Python и Ruby. Можно создавать игру самому и ждать соперника (или послать ссылку кому-нибудь конкретному), а можно вступать в открытые игры. В запущенную игру можно зайти в качестве зрителя. Чтобы следить за открытыми играми без посещения сайта, можно установить расширение для Chrome.

    Если интересно, мы можем отдельно рассказать про бэкэнд. Там используется Erlang, а тесты пишутся на Clojure. Потом они трансформируются в тесты на всех целевых языках с помощью нашей библиотеки multicode.

    Сами задачи тоже лежат на Гитхабе, можно делать пулл-реквесты и добавлять новые задачи (заодно попрактиковаться с Clojure).

    В бой!
    Hexlet
    64.55
    Практические уроки по программированию
    Share post

    Comments 58

      +21
      Напоминает школьные олимпиады по программированию. Не люблю олимпиады.
        0
        Это скорее ката, чем школьные олимпиады.
          +1
          А разница?
            0
            В олимпиадах задачки заковыристые (и уникальные, чтобы не нагуглить решение).
            Ката в восточных единоборствах стандартное упражнение для оттачивания моторики.
            Они развивают разные органы: олимпиада — изобретательность, ката — автоматизм.
              +1
              То есть в предложенной игре два программиста будут функцию факториала кодить? Сомневаюсь. Кто будет в это играть, если задачки там будут не заковыристые?
                0
                Я в codebattle не входил. Зрители не предусмотрены, а авторизоваться я не решил. Не в курсе чего там.
                Я раскрыл коммент freetonik настолько, насколько я его понял.
                Кстати, по адресу freetonik есть несколько таких же по замыслу сайтов, что и описываемый в текущей теме.
                  0
                  Понял, спасибо.
                    +1
                    Зрители предусмотрены, но на текущий момент требуется авторизация.
              0
              Прошу прощения за офтоп, но:

              Чем вам таймс не угодил (http://acm.timus.ru/)?
            +4
            Че за фигня, я набираю код, результат почти готов — потом бах, весь мой код пропадает и остается стандартная заготовка(задание)
              0
              Я бы хотел в таких местах авторизовываться через гугл.
                +3
                Добавим в родмап на будущее. Пока там есть самые программерские альтернативы: github и bitbucket.
                  +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 them

                    +3
                    Это видимо для авторов уроков, они работают через bitbucket.
                      +3
                      Да, это для авторов уроков (которые публикуют упражнения через битбакет).
                      Делаем отдельный вход для них.
                  +3
                  Очень сыро и глючно. Попасть в просмотр игры можно далеко не с первого клика (выбрасывает на список). Попробовал войти как игрок, выкинуло на главную. Список игр на главной то пуст, то хаотично обновляется.

                  Оба участника видят код друг друга? Не круто ж совсем. Подсматривать можно :)

                  Обязательно добавьте сравнение ещё и по скорости выполнения и по объёму отжираемых ресурсов. И по объёму кода (гольферы порадуются).

                  А ваще круто! Спс!
                    +3
                    «Не круто ж совсем. Подсматривать можно :)» В этом один из смыслов.
                      +1
                      Так пока запущенный мной интерпретатор думает и вылетает, мой оппонент спокойно списывает мою задачу и становится победителем.
                        0
                        Ну так это просто бага, которую мы поправим. Главная идея батла была именно в том чтобы видеть код, это в первую очередь обучающая игра с элементами фана.
                      0
                      «Не круто ж совсем. Подсматривать можно :)» В этом один из смыслов.
                      +2
                      Добавьте скрытые проверки. Выпилите половину стандартной библиотеки для всех языков. Заходить в чужую игру почти никогда не получается. Когда получается — при попытке написать комментарий текст пропадает при каждом вводе новой буквы участниками.
                      Сервер не тянет нагрузку, это можно решить перетащив исполнение на клиент. На сервер отдавать только в случае успеха на клиенте для валидации победы.
                        +1
                        Ваще не круто… Написал пару заданий, в итоге застопорился на мелочах, а тем временем соперник практически слизал код, пошаманил и победил… Сделайте так чтобы код открывался в конце! А ещё задания — не всегда можно интуитивно понять что требуется, приходится гадать по ассертам… Ну и выше уже написали глюки, не мешало бы проверять прежде чем выкладывать.
                          +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
                            +4
                            Что я делаю не так?
                              0
                              тоже самое
                                +2
                                Хабраэффект, фиксим.
                              0
                              При попытке создать игру получаю ERR_EMPTY_RESPONSE. Думал отвиснет, но пол часа ничего не меняется.
                                +3
                                Хабраэффект, фиксим.
                                  +3
                                  спасибо за то что я работал вместо игры в рабочее время, но теперь уже можете запускать!
                                    +1
                                    Это совсем не честно, показали крутую картинку с игрой а поиграть второй день не даете…
                                      +1
                                      Извиняемся, зафейлили так зафейлили(. Сейчас уже чуть по лучше стало, попробуйте еще разок).
                                        0
                                        Да, уже поиграл, самый быстрый способ это switch case конечно
                                  +1
                                  А можно посмотреть запись игр?
                                    0
                                    Пока нет, в будущем планируем что-то подобное сделать.
                                      +4
                                      О, это же целая индустрия! Стримы там, летсплеи. Яндекс против JetBrains, и всё такое!
                                    +2
                                    Сижу уже с час в PHP, никого, явно что-то сломалось.
                                      0
                                      А есть ли возможность создать закрытую игру?
                                        0
                                        Ещё бы добавить режим не на скорость, а на наиболее короткий код, как в codingame
                                          +5
                                          По-моему в вашу игру уже один из ваших же стажеров играет… game.hexlet.io
                                            +1
                                            Судя по главной странице, пока поддерживаются только ruby, php, python и JS? Было бы круто еще Haskell добавить.
                                              0
                                              codefights.com уже давно работает
                                                +2
                                                Там немного другая идея. Ну и они, судя по сайту, запустились в 2015. А наш батл еще в 2014 работал).
                                                  +1
                                                  А в 2015-м почему не работает?
                                                    +1
                                                    программировали программировали да невыпрограммировали ;(
                                                +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
                                                

                                                Все тесты удовлетворены, я победил. Мозг не напрягался ;)
                                                  0
                                                  Имеет смысл тогда ещё добавить скрытые тесты, как на том же codewars.com :)
                                                    0
                                                    А вообще люблю ruby. Любая задача решаема в одну строчку :)

                                                    "1234567890".reverse.unpack('A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3').reject{|s| s == ''}.join(",").reverse
                                                      0
                                                      "1234567890".reverse.chars.each_slice(3).map(&:join).join(",").reverse
                                                      
                                                  +2
                                                  Соперник еще не найден, а условие задачи уже можно смотреть в developer tools браузера.
                                                    0
                                                    То есть нет, соперник найден, задача выбрана, но игра еще около минуты не начинается.
                                                      +2
                                                      Скоро прикроем лавочку ;)
                                                    0
                                                    После нажатия кнопки "Проверить", появляется белый прямоугольник где должен быть результат, но он пустой!
                                                      0
                                                      Плюс, выиграл две игры, а счетчик побед равен 0!
                                                        0
                                                        Извиняемся, были проблемы по всему фронту. Сейчас можно играть.
                                                      +3
                                                      Ждем когда появится Java…
                                                        +1
                                                        У меня уже вторые сутки не работает
                                                          +1
                                                          ты и так 100 игр сыграл, дай другим поиграть.

                                                        Only users with full accounts can post comments. Log in, please.