Judge
Python AGPLv3 contest judge backend for the DMOJ site interface. The judge implements secure grading on both Linux and Windows machines.
A modern online judge and contest platform system, supporting IO-based, interactive, and signature-graded tasks. |
The DMOJ Judge does not need a root user to run on Linux machines: it will run just fine under a normal user.
Supported languages include:
- C/++/0x/11/14/
- Java 7/8
- Python 2/3
- PyPy 2/3
- Pascal
- Perl
- Mono C#
- Mono F#
- Mono VB
The following languages are also supported, but only on Windows machines:
- VC
- C#
- F#
- VB.NET
The Judge can also grade in the languages listed below. These languages are less tested and more likely to be buggy.
- Ada
- AWK
- Clang
- Clang++
- COBOL
- D
- Dart
- Fortran
- Forth
- Go
- Groovy
- Haskell
- INTERCAL
- Lua
- NASM
- Objective-C
- Octave
- OCaml
- PHP 5/7
- Prolog
- R
- Racket
- Ruby 2.1
- Rust
- Scala
- Scheme
- sed
- Swift
- Tcl
- Turing
- V8 JavaScript
- Brain****
Installation
$ git clone https://github.com/DMOJ/judge.git
$ cd judge
$ python setup.py develop
This will create two executables in your Python's script directory: dmoj
and dmoj-cli
. dmoj
is used to connect a judge to a DMOJ site instance, while dmoj-cli
provides a command-line interface to a local judge, useful for testing problems.
Usage
Running a Judge Server
$ dmoj --help
usage: dmoj [-h] [-p SERVER_PORT] -c CONFIG [-l LOG_FILE]
[-e ONLY_EXECUTORS | -x EXCLUDE_EXECUTORS] [--no-ansi]
server_host [judge_name] [judge_key]
Spawns a judge for a submission server.
positional arguments:
server_host host to listen for the server
judge_name judge name (overrides configuration)
judge_key judge key (overrides configuration)
optional arguments:
-h, --help show this help message and exit
-p SERVER_PORT, --server-port SERVER_PORT
port to listen for the server
-c CONFIG, --config CONFIG
file to load judge configurations from
-l LOG_FILE, --log-file LOG_FILE
log file to use
-e ONLY_EXECUTORS, --only-executors ONLY_EXECUTORS
only listed executors will be loaded (comma-separated)
-x EXCLUDE_EXECUTORS, --exclude-executors EXCLUDE_EXECUTORS
prevent listed executors from loading (comma-
separated)
--no-ansi disable ANSI output
Running a CLI Judge
$ dmoj-cli --help
usage: dmoj-cli [-h] -c CONFIG
[-e ONLY_EXECUTORS | -x EXCLUDE_EXECUTORS]
[--no-ansi] [--no-ansi-emu]
Spawns a judge for a submission server.
optional arguments:
-h, --help show this help message and exit
-c CONFIG, --config CONFIG
file to load judge configurations from
-e ONLY_EXECUTORS, --only-executors ONLY_EXECUTORS
only listed executors will be loaded (comma-separated)
-x EXCLUDE_EXECUTORS, --exclude-executors EXCLUDE_EXECUTORS
prevent listed executors from loading (comma-
separated)
--no-ansi disable ANSI output
--no-ansi-emu disable ANSI emulation on Windows
More Help
For info on the problem file format and more, read the documentation.