This documentation is automatically generated by online-judge-tools/verification-helper
View the Project on GitHub online-judge-tools/verification-helper
一覧表:
言語 | 認識される拡張子 | テストファイルだと認識されるパターン | 属性の指定方法 | 対応機能 (verify / bundle / doc) | ファイル例 |
---|---|---|---|---|---|
C++ |
.cpp .hpp
|
.test.cpp |
#define [KEY] [VALUE] |
/ / | segment_tree.range_sum_query.test.cpp |
C# script | .csx |
.test.csx |
// verification-helper: [KEY] [VALUE] |
/ / | segment_tree.range_sum_query.test.csx |
Nim | .nim |
_test.nim |
# verification-helper: [KEY] [VALUE] |
/ / | union_find_tree_yosupo_test.nim |
Python 3 | .py |
.test.py |
# verification-helper: [KEY] [VALUE] |
/ / | union_find_yosupo.test.py |
Haskell | .hs |
.test.hs |
-- verification-helper: [KEY] [VALUE] |
/ / | HelloWorld.test.hs |
Ruby | .rb |
.test.rb |
# verification-helper: [KEY] [VALUE] |
/ / | hello_world.test.rb |
Go | .go |
.test.go |
// verification-helper: [KEY] [VALUE] |
/ / | helloworld.test.go |
Java | .java |
_test.java |
// verification-helper: [KEY] [VALUE] |
/ / | HelloWorld_test.java |
Rust | .rs |
特殊 | // verification-helper: [KEY] [VALUE] |
/ / | itp1-1-a.rs |
.verify-helper/config.toml
というファイルを作って以下のように設定を書くと、コンパイラやそのオプションを指定できます。
設定がない場合は、自動でコンパイラ (g++
と clang++
) を検出し、おすすめのオプションを用いて実行されます。
[[languages.cpp.environments]]
CXX = "g++"
[[languages.cpp.environments]]
CXX = "clang++"
CXXFLAGS = ["-std=c++17", "-Wall", "-g", "-fsanitize=undefined", "-D_GLIBCXX_DEBUG"]
ulimit
が動作しないような環境では、自分で CXXFLAGS
を設定する場合はスタックサイズに注意してください。.cpp
.hpp
.cc
.h
のみです。.c
や .h++
のような拡張子のファイルや拡張子なしのファイルは認識されないことに注意してください。設定項目はありません。 コンパイラには .NET Core が使われます。
.cs
という拡張子が認識されないことに注意してください (#248)。.verify-helper/config.toml
というファイルを作って以下のように設定を書くと、コンパイルの際に変換する言語 (例: c
, cpp
) やそのオプションを指定できます。
設定がない場合は AtCoder でのオプションに近いおすすめのオプションが指定されます。
[[languages.nim.environments]]
compile_to = "c"
[[languages.nim.environments]]
compile_to = "cpp"
NIMFLAGS = ["--warning:on", "--opt:none"]
設定項目は特にありません。
binary ターゲットと example ターゲット (ただしcrate-type
が指定されているのは除く) の root source file のうち、PROBLEM
が設定されてあるソースファイルがテストファイルだと認識されます。
依存ファイルを列挙する動作は .verify-helper/config.toml
の languages.rust.list_dependencies_backend
で変更できます。
kind = "none"
デフォルトの動作です。
それぞれのターゲットに関連する .rs
ファイルはすべてひとまとまりとして扱われ、それぞれのターゲット内のファイルの間の依存関係などについては調べません。
[languages.rust.list_dependencies_backend]
kind = "none"
.rs
ファイルすべてを依存ファイルとして扱います。.rs
ファイルすべてを依存ファイルとして扱います。kind = "cargo-udeps"
基本的に kind = "none"
と同じですが、 $PATH
内にある cargo-udeps を利用します。クレート間の依存関係を解析し、より適切なファイル間の依存関係を求めます。
[languages.rust.list_dependencies_backend]
kind = "cargo-udeps"
toolchain = "nightly-yyyy-mm-dd" # defaults to "nightly"
上記以外の言語でも実行可能です (例: examples/awk/circle.test.awk)。
.verify-helper/config.toml
というファイルを作って、以下のようにコンパイルや実行のためのコマンドを書いてください (例: .verify-helper/config.toml)。
compile
と execute
のフィールドは必須で、その他は省略可能です。
[languages.awk]
compile = "bash -c 'echo hello > {tempdir}/hello'"
execute = "env AWKPATH={basedir} awk -f {path}"
bundle = "false"
list_dependencies = "sed 's/^@include \"\\(.*\\)\"$/\\1/ ; t ; d' {path}"
verification_file_suffix = ".test.sed"
サービス名 | 備考 |
---|---|
Library Checker | |
Aizu Online Judge | |
HackerRank | |
AtCoder | 環境変数 DROPBOX_TOKEN の設定が必要です。token の値は $ oj d --system https://atcoder.jp/contests/agc001/tasks/agc001_a として表示されるヒントに従って取得してください。 |
yukicoder | 環境変数 YUKICODER_TOKEN の設定が必要です。ヘルプ - yukicoder の「ログインしてないと使えない機能をAPIとして使いたい」の節や 暗号化されたシークレットの作成と利用 - GitHub ヘルプ 参考にして設定してください。 |
これらの他サービスはテストケースを利用できる形で公開してくれていないため利用できません。
変数名 | 説明 | 備考 |
---|---|---|
PROBLEM |
提出する問題の URL を指定します | 必須 |
IGNORE |
これが定義されていれば verify は実行されません |
#ifdef __clang__ などで囲った中で指定することで特定の状況下でのみ実行を抑制することができます |
ERROR |
許容誤差を指定します |
リポジトリ内に Markdown ファイルを置いておくと自動で認識されます。
Front Matter 形式で documentation_of
という項目にファイルを指定しておくと、指定したファイルについての生成されたドキュメント中に、Markdown ファイルの中身が挿入されます。
たとえば、path/to/segment_tree.hpp
というファイルに説明を Markdown で追加したいときは for/bar.md
などに次のように書きます。
---
title: Segment Tree
documentation_of: ./path/to/segment_tree.hpp
---
## 説明
このファイルでは、……
documentation_of
文字列は、./
あるいは ..
から始まる場合は Markdown ファイルのパスからの相対パスであると認識されます。また、//
から始まる場合は .verify-helper
ディレクトリがある場所をルートとする絶対パスであると認識されます。
また、ディレクトリ区切り文字には /
を使い、大文字小文字を正しく入力してください。
.verify-helper/docs/index.md
というファイルを作って、そこに Markdown で書いてください。
.verify-helper/markdown/
ディレクトリ内で以下のようにコマンドを実行すると、生成されたドキュメントが http://localhost:4000/ から確認できます。
$ bundle install --path .vendor/bundle
$ bundle exec jekyll serve
ただし Ruby の Bundler が必要です。
これは Ubuntu であれば sudo apt install ruby-bundler
などでインストールできます。
.verify-helper/docs/_config.yml
を作成しておくと、いくつかの修正をした上で出力先ディレクトリにコピーされます。.verify-helper/docs/static/
以下にファイルを作成しておくと、ドキュメント出力先ディレクトリにそのままコピーされます。