online-judge/README.md

148 lines
5.4 KiB
Markdown
Raw Permalink Normal View History

2023-01-03 01:46:46 +08:00
<h1 align="center">
2024-05-28 09:27:35 +08:00
<img src="https://github.com/DMOJ/online-judge/blob/master/logo.png?raw=true" width="120px">
2023-01-03 01:46:46 +08:00
<br>
DMOJ: Modern Online Judge
</h1>
<p align="center">
<a href="https://github.com/DMOJ/online-judge/actions?query=workflow%3Abuild">
<img alt="Build Status" src="https://img.shields.io/github/actions/workflow/status/DMOJ/online-judge/build.yml?branch=master"/>
</a>
<a href="LICENSE.md">
<img alt="License" src="https://img.shields.io/github/license/DMOJ/online-judge"/>
2023-01-03 01:46:46 +08:00
</a>
<a href="https://dmoj.ca/about/discord/">
<img src="https://img.shields.io/discord/677340492651954177?color=%237289DA&label=Discord"/>
2023-01-03 01:46:46 +08:00
</a>
</p>
A modern open-source online judge and contest platform system. It has been used to host thousands of competitions, including several national olympiads.
2019-11-05 05:17:31 +08:00
2019-11-05 05:18:07 +08:00
See it live at [dmoj.ca](https://dmoj.ca/)!
2016-08-20 02:29:00 +08:00
## Features
2019-11-05 05:07:11 +08:00
* [Support for over **60 language runtimes**](https://github.com/DMOJ/online-judge#supported-languages)
* Highly robust judging system:
* Supports **interactive** and **signature-graded** tasks
* Supports **runtime data generators** and **custom output validators**
2019-11-05 05:07:11 +08:00
* Specifying **per-language resource limits**
* Capable of scaling to hundreds of judging servers
2019-11-05 04:53:53 +08:00
* Extremely configurable contest system:
2022-07-27 12:29:19 +08:00
* Supports ICPC/IOI/AtCoder/ECOO formats out-of-the-box
2019-11-05 04:53:53 +08:00
* **System testing** supported
* **Hidden scoreboards** and **virtual participation**
* [Elo-MMR](https://arxiv.org/abs/2101.00400)-style **rating**
2019-11-05 05:29:34 +08:00
* **Plagiarism detection** via [Stanford MOSS](https://theory.stanford.edu/~aiken/moss/)
2019-11-05 04:53:53 +08:00
* Restricting contest access to particular organizations or users
* Rich problem statements, with support for **LaTeX math and diagrams**
2019-11-05 05:07:11 +08:00
* Automatic **PDF generation** for easy distribution
2019-11-05 04:53:53 +08:00
* Built-in support for **editorials**
* **Live updates** for submissions
* Internationalized site interface
2019-11-05 04:53:53 +08:00
* Home page blog and activity stream
2019-11-05 05:07:11 +08:00
* Fine-grained permission control for staff
* OAuth login with Google, Facebook, and Github
2019-11-05 04:53:53 +08:00
* Two-factor authentication support
## Installation
Check out the install documentation at [docs.dmoj.ca](https://docs.dmoj.ca/#/site/installation). Feel free to reach out to us on [Discord](https://dmoj.ca/about/discord/) if you have any questions.
2019-11-05 04:53:53 +08:00
## Screenshots
### Sleek problem statements
2016-08-20 02:29:00 +08:00
Problems are written in Markdown, with LaTeX-enabled math and figures, as well as syntax highlighting. Problem statements can be saved to PDF for ease of distribution to contestants.
![](https://i.imgur.com/7KD7h5r.png)
2016-08-20 02:29:00 +08:00
### Submit in over 60 languages
Contestants may submit in over 60 programming languages with syntax highlighting. Problem authors can restrict problems to specific languages, and set language-specific resource limits.
2016-08-20 02:29:00 +08:00
2017-10-01 08:33:02 +08:00
![](https://i.imgur.com/8CjfHQb.png)
2016-08-20 02:29:00 +08:00
### Live submission status
Submission pages feature live updates, and submissions may be aborted by both submission authors and administrators. Compilation errors and warnings for a number of languages feature color highlighting.
2017-10-01 08:33:02 +08:00
![](https://i.imgur.com/Hom0U3R.png)
2016-08-20 02:29:00 +08:00
Global, per-problem, and per-contest submission lists are live-updating, and can be filtered by status and language.
![](https://i.imgur.com/rc7orzj.png)
### Extensible contest system
2019-11-06 05:04:24 +08:00
Contests feature an optional rating system, and can be configured to run in any timeframe. Users are also able to participate virtually after the contest ends. ICPC, IOI, AtCoder, and ECOO contest formats are supported out-of-the-box, and new formats can be added with custom code.
2016-08-20 02:29:00 +08:00
![](https://i.imgur.com/0V1fzZi.png)
2016-08-20 02:29:00 +08:00
Contests may be limited to particular organizations, or require access codes to join. Hidden scoreboards are supported. The contest system integrates with [Stanford MOSS](https://theory.stanford.edu/~aiken/moss/) to provide plagiarism checking.
Editorial support is built-in, and editorials are automatically published once a contest ends.
2016-08-20 02:43:59 +08:00
### Home page blog and activity stream
Announcements from administrators, ongoing contests, recent comments and new problems are easily accessible from the home page.
![](https://i.imgur.com/zpQAoDB.png)
### Internationalized interface
2020-08-23 10:32:22 +08:00
Use the site in whatever language you're most comfortable in &mdash; visit [translate.dmoj.ca](https://translate.dmoj.ca/) to check the translation status of your preferred language. Problem authors can provide statements in multiple languages, and DMOJ will display the most relevant one to a reader.
2016-08-20 02:43:59 +08:00
![](https://i.imgur.com/OeuI0o5.png)
2016-08-20 02:43:59 +08:00
2016-08-20 02:29:00 +08:00
### Highly featured administration interface
2016-08-20 02:43:59 +08:00
The DMOJ admin interface is highly versatile, and can be efficiently used for anything from managing users to authoring problem statements.
2016-08-20 02:29:00 +08:00
![](https://static.dmoj.ca/data/_other/readme/problem-admin.png)
2016-08-20 02:29:00 +08:00
![](https://static.dmoj.ca/data/_other/readme/admin-dashboard.png)
2016-08-20 02:29:00 +08:00
2023-01-03 01:46:46 +08:00
## Supported languages
2020-08-23 10:32:22 +08:00
Check out [**DMOJ/judge-server**](https://github.com/DMOJ/judge-server) for more judging backend details.
Supported languages include:
2021-01-31 11:12:14 +08:00
* C++ 11/14/17/20 (GCC and Clang)
* C 99/11
2024-06-03 09:16:33 +08:00
* Java 8-22
* Python 2/3
* PyPy 2/3
* Pascal
* Mono C#/F#/VB
The judge can also grade in the languages listed below:
* Ada
* Algol 68
* AWK
* COBOL
* D
* Dart
* Fortran
* Forth
* Go
* Groovy
* GAS x86/x64/ARM
* Haskell
* INTERCAL
* Kotlin
* Lua
2023-01-03 02:22:56 +08:00
* LLVM IR
* NASM x86/x64
* Objective-C
* OCaml
* Perl
* PHP
* Pike
* Prolog
* Racket
* Ruby
* Rust
* Scala
* Chicken Scheme
* sed
* Steel Bank Common Lisp
* Swift
* Tcl
* Turing
* V8 JavaScript
* Brain\*\*\*\*
2020-05-04 08:17:03 +08:00
* Zig