Привет, Хабр!
Три недели назад мы (дружная команда образовательного проекта Гекслет ) опубликовано быстрый о нашем новом проекте — игре для программистов Codebattle. Напомню, что идея игры очень проста: вам и вашему оппоненту дается задача, вы решаете ее на выбранном вами языке.
Вы в реальном времени видите код оппонента, результаты запуска тестов, можете общаться с ним и зрителями.
Выигрывает тот, кто первым решит задачу (пройдёт тесты).
После публикации статьи мы провели веселый день.
Мы зашли под хабраэффект и нашли несколько ошибок.
Когда буря утихла, жизнь на арене снова закипела.
В течение следующих двух недель мы решали три основные проблемы: производительность, борьба с читерством и возможность быстрого добавления новых языков.
И они их решили! Встретиться - обновленный кодбатл ! Кратко:
- Хабраэффект нам не страшен (тьфу-тьфу-тьфу)
- Вы больше не сможете жульничать (нельзя подогнать решение под тесты)
- Добавлять языки стало проще (теперь у нас уже есть Clojure, Ruby, Js, Python, php, Java, erlang)
Почему они солгали и как решили?
Мы работали через опросы, которые генерировали тысячи запросов в минуту.Теперь все переписано через вебсокеты.
Также была ошибка в библиотеке nkdocker.
Обман и языки
В предыдущей версии была такая система:- Написание заданий и тестов в Clojure
- Переводим на целевые языки с помощью нашей библиотеки мультикод .
- Показать сгенерированные тесты игроку
Кроме того, такой дизайн затруднял добавление новых языков.
В обновленной версии другая схема: мы просто работаем через стандартные потоки ввода/вывода stdin/stdout и не привязаны к конкретному языку.
Теперь мы генерируем тесты при проверке и не показываем их игроку.
Система стала намного проще: мы просто подаем сгенерированные данные в вашу программу и смотрим на стандартный вывод. Это также облегчило добавление новых языков; нам удалось добавить Clojure, Java и Erlang. Мелочи: добавил кучу новых заданий, обновил описания во всех заданиях, обновил расширение для Chrome .
Как добавить новую задачу
Хотите добавить новую задачу в базу данных и улучшить свои навыки работы с Clojure? ;-) В нашем репозитории задач Есть подробный README и наглядные примеры.В нашем Слабый чат Есть специальный канал #codebattle, где можно обсуждать игры, проблемы и идеи.
Теги: #codebattle #игра #Аномальное программирование #спортивное программирование #программирование
-
Бесполезный Репл. Отчет Яндекса
19 Oct, 24 -
Обзор
19 Oct, 24 -
Баш Мертв, Детка*. Вива Зш
19 Oct, 24 -
«Ит-Театр» Из Бетона И Зелени
19 Oct, 24 -
Таблица Дроидов. Выпуск 23
19 Oct, 24 -
Пользователи, Функции И Танцующие Медведи
19 Oct, 24