Skip to content

Giantpizzahead/judgelite

Repository files navigation

JudgeLite build Docker Image Version codecov license

JudgeLite logo

A simple, easy to setup judge for checking the correctness of code.

Features

  • Multiple test cases and subtasks!
  • Variety of scoring methods (all-or-nothing, partials, stop-on-wrong, etc.)
  • Support for custom checkers written in all 3 languages shown below
  • Supports submissions in C++, Java, and Python 3
  • Secure code compilation and execution using isolate
  • Extremely simple setup
  • Bonus test cases! (less discouraging form of subtasks)
  • Easy-to-use submission API
  • Easy problem creation
  • Simple administrative web interface
  • Supports interactive problems (WIP)

Demo

Video demo

Home page Home page

Submission list Submission list

Submission details Submission details

Problem statement Problem statement

Subtasks! And lots of test cases... Subtasks! And lots of test cases...

Setup

Easy setup instructions for Linux and Windows are on this wiki page.

The web server listens on port 80. You'll be greeted by a nice admin interface.

Andddd that's it! Go get that AC! :)

Usage

(Note: This is a personal project, so it's probably best to find another judge if you're trying to host a contest / create a big website. JudgeLite is ideal for smaller use cases, like programming clubs and small practice sites.)

JudgeLite is designed to be used for competitive programming problems, although anything requiring automatic testing of source code will work.

There is an API Reference page on JudgeLite, where all the allowed API calls are showcased with examples. You can use the reference as an example on how to use the API. A more detailed Wiki page explaining the subtleties of the submission API can be found here.

In order to use JudgeLite, you'll need to first create some problems to submit to! Luckily, the file structure for creating problems is pretty easy to follow (uses YAML and Markdown). Take a look at the sample problem structure in the sample_problem_info directory for an example set of problems. A more detailed Wiki page about problem creation can be found here.

Contributing

We welcome contributions of all kinds, whether they're bug reports, feature requests, or pull requests! See the contributing guidelines for more details. If you'd like to get your hands dirty, try tackling one of the open issues.

License

JudgeLite is distributed under the MIT License. This means that you are free to customize anything you want, as long as you distribute your work under the MIT License as well.

Credits

This repository is maintained by Giantpizzahead.

Special thanks to frodakcin and the other HHS Programming Club officers for helping out with JudgeLite's development!