codebattle icon indicating copy to clipboard operation
codebattle copied to clipboard

Task Editor

Open ReDBrother opened this issue 3 years ago • 2 comments

Альтернатива battle_asserts. Мы хотим добавить возможность написания кастомных тасок для кодбатла через сайт. Реализовать как добавление в список общих, так и формирование своих отдельных списков в рамках турнира или хакатона. Генерация задачи состоит из следующих этапов:

  1. (*) Условие задачи, его уровень сложности (В будущем будут и дополнительные метки). У всех задач единый формат: это написание функции solution, который получает на вход аргументы и возвращает результат вычислений (без побочных эффектов).
  2. (*) Типы аргументов функции и тип возвращаемого значения. (Cигнатуры)
  3. (*) Примеры вызова solution. Каждый пример состоит из набора аргументов и ожидаемого значения. (Минимум 5 примеров)
  4. Генератор аргументов. Он нужен, чтобы динамически генерировать случайный набор входных аргументов.
  5. Эталонное решение (реализованная функция solution). Через него будут прогонятся набор аргументов из 4 шага, чтобы для каждого набора вычислить ожидаемое значение.

(*) - Необходимые этапы. Остальные нужны для генерации ассертов на лету (условно) и этим можно пренебречь для упрощения создания тасок.

На стороне фронтенда нужно оформить все этапы выше и отправку всех данных на сервер. На стороне сервера задача генерация таски, по данным редактора. Проверить кастомные примеры (шаг 3) и сгенерированные примеры (шаги 4-5) на соответствие сигнатурам и записать таску в базу.

Под этим ишью будет основное обсуждение идеи, если возьмём в разработку. Разработка ведется в ветке 991-task-editor

ReDBrother avatar Apr 02 '21 10:04 ReDBrother

@vtm Так, что случилось?)))

ReDBrother avatar May 30 '21 09:05 ReDBrother

начну делать. Постараюсь сначала разбить на более мелкие задачи.

possesion avatar Jun 08 '21 07:06 possesion

добавил такую возможность через серверный рендеринг, посмотрим как оно пойдет.

vtm9 avatar Sep 03 '22 09:09 vtm9

добавил такую возможность через серверный рендеринг, посмотрим как оно пойдет.

vtm9 avatar Sep 03 '22 09:09 vtm9

добавил такую возможность через серверный рендеринг, посмотрим как оно пойдет.

vtm9 avatar Sep 03 '22 09:09 vtm9