Skip to content
forked from DMOJ/judge-server

A modern online judge and contest platform system.

License

Notifications You must be signed in to change notification settings

mmun/dmoj-judge

 
 

Repository files navigation

Judge Build Status Coverage

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++
  • Clozure Common Lisp
  • COBOL
  • D
  • Dart
  • Fortran
  • Forth
  • Go
  • Groovy
  • Haskell
  • INTERCAL
  • Kotlin
  • Lua
  • NASM
  • Nim
  • Objective-C
  • Octave
  • OCaml
  • PHP 5/7
  • Pike
  • 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.

About

A modern online judge and contest platform system.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 73.0%
  • C++ 21.2%
  • C 2.6%
  • Java 2.2%
  • C# 0.6%
  • Makefile 0.2%
  • Other 0.2%