CodeBattles
Github
RU_v2
RU_v2
  • О системе
  • Обзор
    • Интерфейс участника
    • Интерфейс учителя
  • Установка
    • Установка
    • Значения по умолчанию
    • Как зайти
    • Настройка языков программирования
    • Образы чекеров
  • Как работает система
    • Архитектура
    • Production Архитектура
  • Свое соревнование
    • Подготовка задач
      • Создание своей задачи
      • Импорт готовой задачи
    • Создание соревнования
Powered by GitBook
On this page
  • Генерация шаблона задачи
  • Свои тесты для программы
  • Изменяем описание
  • Генерация задачи

Was this helpful?

  1. Свое соревнование
  2. Подготовка задач

Создание своей задачи

PreviousПодготовка задачNextИмпорт готовой задачи

Last updated 1 year ago

Was this helpful?

Генерация шаблона задачи

Для удобной работы с задачами есть Скачиваем его и заходим в основную папку, где есть manager.py

Для генерации задачи вводим в консоль ({NAME} - имя задачки)

python manager.py create {NAME} -f -e 

На Linux, возможно, потребуется запустить через команду python3

python3 manager.py create {NAME} -f -e

После этого в папке programms появилась наша папка( В примере {NAME} = test}

Имя файла
Предназначение

description.txt

Описание задачи

in_data.txt

Входные данные задачи

name.txt

Имя задачи

out_data.txt

Выходные данные задачи

Имя файла
Предназначение

build.py

Файл для сборки задачи.(Рассмотрим позже)

main.py

Эталонная программа для данной задачи (Благодаря ей будут генерироваться тесты)

Теперь давайте рассмотрим содержимое файла build.py.

examples - словарь, где ключ - входные данные, значение - выходные input_data - список с входными значениями, с которыми сгенерируются тесты

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

Свои тесты для программы

Примеры напишем сами, а вот входные данные сгенерируем с помощью программы. Изменяем build.py и эталон программы

main.py
n = int(input())
if n % 2 == 0:
    print("YES"
else:
    print("NO")
build.py
from core.runner import Runner
from random import randint

runner = Runner()

examples = {
    "2": "YES",
    "3": "NO",
}

input_data = []

for i in range(30):
    input_data.append(randint(0, 100))

out = runner.run_many(input_data)
runner.save_tests(out, input_data)
runner.save_examples(examples)
runner.build(indent=2)
print("[+] Done")

Изменяем описание

Также изменяем описание, входные и выходные данные. Показывать не буду, т.к будет много текста. Просто напишу везде test

Все файлы
name.txt
test
description.txt
test
in_data.txt
test
out_data.txt
test

Генерация задачи

После всех шагов, запускаем build.py

Вывод
[/] Tests are running 
30/30 
[+] Tests was built
[/] Building export 
[+] Export was built 
[+] Done

У нас появился файл build.json . Это и есть наша сгенерированная задача. Ее мы будет загружать на платформу

Этот файл содержит все данные, тесты, примеры.

build.json
{
  "name": "test",
  "description": "test",
  "in": "test",
  "out": "test",
  "examples": [
    ["2", "YES"],
    ["3", "NO"]
  ],
  "tests": [
    [
      "87",
      "NO"
    ],
    [
      "11",
      "NO"
    ],
    [
      "73",
      "NO"
    ],
    [
      "40",
      "YES"
    ],
    [
      "97",
      "NO"
    ],
    [
      "51",
      "NO"
    ],
    [
      "9",
      "NO"
    ],
    [
      "80",
      "YES"
    ],
    [
      "70",
      "YES"
    ],
    [
      "75",
      "NO"
    ],
    [
      "7",
      "NO"
    ],
    [
      "56",
      "YES"
    ],
    [
      "62",
      "YES"
    ],
    [
      "14",
      "YES"
    ],
    [
      "32",
      "YES"
    ],
    [
      "53",
      "NO"
    ],
    [
      "25",
      "NO"
    ],
    [
      "0",
      "YES"
    ],
    [
      "23",
      "NO"
    ],
    [
      "74",
      "YES"
    ],
    [
      "82",
      "YES"
    ],
    [
      "19",
      "NO"
    ],
    [
      "99",
      "NO"
    ],
    [
      "56",
      "YES"
    ],
    [
      "41",
      "NO"
    ],
    [
      "43",
      "NO"
    ],
    [
      "54",
      "YES"
    ],
    [
      "57",
      "NO"
    ],
    [
      "14",
      "YES"
    ],
    [
      "57",
      "NO"
    ]
  ]
}

Готово!

Система может воспринимать формат текста Markdown.

[Примеры формата]
TestsGeneratorFramework