StardustDL / generator-oj-problem

A command-line tool to generate Online-Judge problem.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Generator-OJ-Problem

Downloads

A command-line tool to generate Online-Judge problem.

  • Render problem descriptions in Markdown to HTML
  • Check problem descriptions and data, including missing fields, UTF-8 encoding, end-of-line CRLF/LF
  • Packing problem data in freeproblemset(hustoj) format
  • Mechanism for generating input and output test data
  • Easy to define adapters for other online-judge platform

Have fun! If you have any suggestions or find any bugs, please tell me.

Install

pip install generator-oj-problem

# or use pipx for a standalone python environment
pip install pipx
pipx ensurepath
pipx install generator-oj-problem

gop --help

Usage

# Initialize your problem
gop init

# Modify the files to write problem
ls .

# Generate 2 sample data from id 1
gop gen -s 1 -c 2 --sample
# Generate 5 test data from id 2
gop gen -s 2 -c 5

# Trim sample and test data
gop trim

# Check validaty
gop check

# Pack your problem in FreeProblemSet format
gop -a fps pack

If you meet some encoding errors, ensure your Python interpreter runs in UTF-8 mode, e.g. adding PYTHONUTF8=1 to your environment variables.

Directory Structure

Here is a demo problem A + B Problem. Details about problem.yml and generator.py are given at the comments of the demo files.

The file with extension .md means it supports plain CommonMark by built-in render. Attention: No LaTeX and embeded image supports.

  • problem.yml Problem metadata and configuration
  • description.md Description
  • input.md Description of input
  • output.md Description of output
  • hint.md Hint
  • solution.txt Solution source code
  • generator.py Generator for input or output data.
  • samples/ Sample data
    • samples/0.in Input of sample
    • samples/0.out Output of sample
  • tests/ Test data (same form to samples/)

About

A command-line tool to generate Online-Judge problem.

License:Mozilla Public License 2.0


Languages

Language:Python 100.0%