/PenguinJudge

ペンギンジャッジ、よちよちでも歩いていけよ

Primary LanguageTypeScriptMIT LicenseMIT

PenguinJudge

プライベート競技プログラミングコンテスト用の ジャッジシステムです。

必要なもの

  • Python 3.8
  • Docker
  • PostgreSQL
  • RabbitMQ

DockerHub

Image Name
penguinjudge/backend DockerHub Backend Version
penguinjudge/frontend DockerHub Frontend Version
Language Compile Image Judge Image
C (gcc) ver ver
C++ (gcc) ver ver
Rust ver ver
Go ver ver
Java ver ver
Python ver
Python(pypy) ver
JavaScript (node.js) ver
Ruby ver

起動方法

docker

docker-compose

docker-composeを使った起動方法

$ cd container
$ ./build.sh
$ cd ..
$ docker-compose up --build

設計

  • すべてのデータはRDBMS(PostgreSQL)に保存

    • 問題
    • テストデータ / 正答
    • ユーザ投稿コード
  • プロセス

    • ステートレス (スケールアウト可能)
      • 静的ファイル配布サーバ (nginx等)
      • RESTful APIサーバ
      • ジャッジ用ワーカ
    • ステートフル
      • PostgreSQL
      • RabbitMQ
  • 答え合わせの方式

    • AtCoder方式
      • 標準入力でテストデータを注入
      • 標準出力と、正答を比較し、一致するかどうかのみを返却
      • RE / TLE