judgelight

module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 2, 2024 License: MIT

README

動作環境

  • Docker Engine - Community v26.1.4
  • Docker compose v2.27.1
  • go version go1.22.4 linux/amd64

1. 初期設定

1-1. 必要ソフトウェアのインストール

上記記載のソフトウェア(Docker/Docker compose/golang)をインストールしてください。
参考までに,各ソフトウェアの公式サイトを以下に掲載します.

  • Docker
  • Dcoker Compose
  • Golang
    なお、フロントエンド部分の描写に使用しているソフトウェアはDocker経由でインストールされるため、必要ありません。

1-2. Repositoryのダウンロード

gitコマンドやzip形式でのダウンロードなどを使用して、repositoryをダウンロードしてください。
例として,以下にgitでcloneするコマンドを掲載します.
$ git clone https://github.com/admidori/judgelight.git

1-2. 各種変数の変更

各種変数を以下のように変更してください。

  • docker/nginx/conf.dserver name:localhostを使用するサーバのIPアドレスに変更。
  • frontend/config.jsonの変数domainlocalhostから使用するサーバのIPアドレスに変更。  

2. 起動方法

2-1. ソフトウェアの実行

dockerとバックエンド用のgoプログラムを以下のコマンドで実行します.

  1. $ cd cmd/backend && go run main.go
  2. $ docker compose up

(それぞれ別プロセスのターミナル)で実行してください。

2-2. 問題セットの設定

$ go run cmd/cli/main.go set -f setting.yaml
この操作により、setting.yamlに記述した設定事項がデータベースに記録されます. その後、judgelight/settingsディレクトリ内のファイルを変更し、問題の設定を行います。
問題の設定についての詳細は「問題設定について」をご覧ください。

問題設定について

設定ファイルとしてYAMLファイルを採用しています.YAMLファイルにて設定できる項目は以下の通りです.

contest_infomation: //コンテスト情報を設定できます
  title: "Contest Title"    //コンテストのタイトルを設定できます
  start_time: "2023-01-01 00:00:00" //コンテストの開始時間を設定できます
  end_time: "2023-01-01 00:00:00"   //コンテストの終了時刻を設定できます

problem:    //問題情報を設定できます
  - number: 1   //第一問目に関する設定です
    title: "Problem Title"  //問題のタイトルを設定できます
    score: 100  //問題の得点を設定できます
    limit_execute_time: 10  //実行制限時間を設定できます
    limit_execute_memory: 256   //実行メモリの制限を設定できます(現時点ではこの値は使用していません)
    description: "Problem Description"  //問題文を設定できます
    limit_description:            // 値の制限に関する文面を設定できます
      - description: "Limitation Description1"
      - description: "Limitation Description2"
      - description: "Limitation Description3"
    input_description: "Input Description"  //入力に関する説明を設定できます
    output_description: "Output Description"    //出力に関する説明を設定できます

    initial_code: |-    //ページに表示されるコードを設定できます
      #include<stdio.h>
      int main(void){
        int a,b;
        scanf("%d %d",&a,&b);
        printf("%d\n",a+b);
        return 0;
      }

    testcases:  //テストケースを設定できます
      - input: |- 
          1 2
        output: |-
          3

      - input: |- 
          5 6
        output: |-
          11

    secretcases:    //非公開のテストケースを設定できます
      - input: |- 
          2 2
        output: |-
          4

      - input: |- 
          0 10
        output: |-
          10

      - input: |- 
          22 2
        output: |-
          24

examplecaseとtestcaseの違い

testcase内に設定した入力と出力の対応は、Webページに表示されます。
secretcase内に設定した入力と出力の対応は、Webページには表示されず、秘匿されます。
どちらもdocker内でAC/WAの判定に使用されることは違いはありません。全てのテストケースがACで通った場合のみ、ACとなります。

判定結果について

ジャッジシステムとして,以下のジャッジ項目を用意しています.

  • AC
    testcaseおよびsecretcase全てにおいて出力結果が一致した場合
  • WA
    testcaseまたはsecretcaseにおいて,どれか一つでも出力結果が一致しなかった場合(現状ではメモリリークエラーに該当するMLEも含まれます)
  • TLE
    testcaseまたはsecretcaseにおいて,実行時間(設定項目におけるlimit_execute_time)が超過した場合
  • CE
    提出したプログラムのコンパイルが失敗した場合

結果の確認方法

結果は、全てサーバ内に保存されます.結果を出力するときは以下のコマンドを入力してください.
$ go run cmd/cli/main.go total -f <出力したいCSVファイルのパス>

License

MIT (c) 2023-2024 @admidori

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL