Skip to content

Latest commit

 

History

History
70 lines (46 loc) · 2.93 KB

generator.md

File metadata and controls

70 lines (46 loc) · 2.93 KB

テストケースの追加の仕方

  1. ジェネレーターを作る
  2. {problem_dir}/info.toml にジェネレーターを登録する
  3. (存在する場合) {problem_dir}/info.toml に嘘解法を登録する
  4. 手元で動かしてみる

という流れになります({problem_dir}は例えばsample/aplusbなど)

ジェネレーターを作る(CPP)

既に山ほどジェネレーターがあるので、それらを参考にするといい感じに作れます。

大事なこととして、

  • 乱数生成器は #include "random.h" し、common/random.h の中の struct Random を使う
  • 乱数の初期化は、argv[1] を使う
  • 大量に出力する場合、iostream高速化をする

を守って欲しいです。sample/aplusb/gen/random.cpp をそのまま使い回すといいです。

現状コーディング規約とかは無いんですが、あまりに大量の競プロテンプレートなどは避けてください。 また、

  • bits/stdc++.h を使わない
  • 警告を無視しない
  • 配列を出力するときに、末尾には空白を入れない
  • 手元とCIで全く同じケースが生成できる(=環境依存性が無い)

を守らないとCIが通らないです。

ジェネレーターを作る(txt)

手作業で作れるケースの場合(目安: 整数20個ぐらいまで)、直接テキストファイルで用意しても大丈夫です。

  • ファイル最後の改行をちゃんと入れているか
  • 余分な空白文字が入っていないか

ジェネレーターを登録する

{problem_dir}/gen に作ったジェネレーターを入れ、 info.toml に以下のように追記します。これで作ったジェネレーターを登録することができます。

[[tests]]
    name = "my_generator.cpp"
    number = 2

もう登録されているやつをパクれば大丈夫です。

  • 名前はケースの内容を表していると嬉しいです(もちろん出来る限りで)
  • ケース数は種類によりますが、特定の嘘解法を落とすタイプなら1か2にしてください

嘘解法を登録する

嘘解法が通ってしまうからケースを追加するという場合、{problem_dir}/sol に嘘解答のコードを入れ、info.toml に以下のように追記すると嘘解法を登録することが出来ます。

[[solutions]]
    name = "wa.cpp"
    wrong = true
  • 名前は嘘解法の内容を表せていると嬉しいです(もちろん出来る限りで)
  • ライセンスに注意してください 他人の提出したコードを勝手に突っ込むとかはダメです

手元で動かしてみる

README の How to use に従い、実際にジェネレーターを動かしてみると、うまく動いているかがチェックできます。