Skip to content

Commit 1d3132c

Browse files
authored
Update README.md
1 parent 04f7bed commit 1d3132c

File tree

1 file changed

+36
-14
lines changed

1 file changed

+36
-14
lines changed

README.md

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,56 @@ Problems for Waseda CS orientation 2018
1010
* [2015](https://github.com/AI-comp/Orientation2015Problems)
1111
* [2014](https://github.com/AI-comp/Orientation2014Problems) - [順位表](https://drive.google.com/file/d/0BzlMTVLOBnPmN25pWFBYbXN5STA/view?usp=sharing)
1212

13-
# How to Create a new Problem
1413

15-
1. 問題ディレクトリ作成(プロジェクトトップで以下実行)
14+
# Guide for Problem Writers
15+
16+
サンプル問題である `a+b` に,一通り必要な物が揃っているので,これを参考にしてください.
17+
18+
## 準備
19+
20+
* [rime](https://github.com/icpc-jag/rime) インストール
21+
22+
## 新規問題追加
23+
24+
1. 問題ディレクトリの作成(プロジェクトトップで以下実行).
25+
1626
```
1727
rime add . problem <problem_name>
1828
```
1929

20-
2. `statement.md` を書く.
30+
2. その問題の設定ファイル `PROBLEM``<problem_name>/` に作成され,エディタで開くので,適当に必要そうなところを編集する.(AtCoder用の項目とかもあるので分からなければ飛ばす)
2131

22-
3. 必要に応じてwriter解,input generator, input validatorを作る.[testlib](https://github.com/MikeMirzayanov/testlib)を使おう
32+
3. 問題文ファイル `statement.md` を作成して,書く
2333

24-
# How to Solve and Test Problems
34+
4. 必要に応じてwriter解(次の「解の追加」も参照),input generator, input validatorを作る.generator, validatorには[testlib](https://github.com/MikeMirzayanov/testlib)を使おう.`PROBLEM` ファイルの `reference_solution` にはwriter解を指定する.
2535

26-
1. [rime](https://github.com/icpc-jag/rime)をインストール
27-
```
28-
pip install git+https://github.com/icpc-jag/rime
29-
```
36+
## 解の追加とテスト
3037

31-
2. 解く問題のディレクトリ名を確かめ,以下を実行.この際,``solution_name``は既存のものと被らなければ自由に設定可能.
38+
1. 解く問題のディレクトリ名を確かめ,以下を実行.この際,``solution_name``は既存のものと被らなければ自由に設定可能.
3239
```
3340
rime add <problem_dir_name> solution <solution_name>
3441
```
3542

36-
3. 既定のエディタで`SOLUTION`ファイルが開く.このファイルが解法の設定ファイル.今から作る解法のファイル名やコンパイルオプション等を設定する.(分からない場合は問題`a+b`に複数の言語での設定があるので参考にしてください.)
43+
2. その解法の設定ファイル `SOLUTION``<problem_name>/<<problem_dir_name>` に作成され,エディタで開く.今から作る解法のファイル名やコンパイルオプション等を設定する.(分からない場合は問題`a+b`に複数の言語での設定があるので参考にしてください.)
3744

38-
4. `<problem_dir_name>/<solution_name>` ディレクトリ内に解答を作成
45+
3. `<problem_dir_name>/<solution_name>` ディレクトリ内に先ほどのファイル名で解答を作成
3946

40-
5. `rime test -j N` コマンドでジャッジを実行.(`N`は並列ジョブ数.)
47+
4. `rime test -j N` コマンドでジャッジを実行.(`N`は並列ジョブ数.)
4148
プロジェクトのルートで実行すれば,全問題に対するジャッジが走る.問題のディレクトリ内で実行すれば,その問題だけのジャッジが走る.解法のディレクトリ内で実行すれば,その解法だけのジャッジが走る.
4249

43-
他にもrimeの機能はあるので,詳しく知りたい場合はこちら: https://rime.readthedocs.io/ja/latest/
50+
> 今回は,`<problem_dir_name>/tests` に全部のテストケースを入れるようにしている.そのディレクトリ内の `*.in` ファイルは入力ファイルとして扱われる.それに対し,同一ファイル名の `*.diff` があれば,それが期待される出力である.`*.diff` ファイルが存在しない場合,`PROBLEM` ファイルの `reference_solution` で指定されたwriter解の出力が,その入力に対する出力ファイルとみなされる.
51+
52+
## Generator, validator作成
53+
54+
* Generatorとは
55+
* 入力ファイルを生成するプログラム.
56+
* Validatorとは
57+
* 生成された入力ファイルが,制約を守って正しいフォーマットであることを検証するプログラム.
58+
* outputJudgeとは
59+
* 完全一致以外が許される出力をチェックし,出力されたものがACか否かをジャッジするプログラム.オリエンでは出力の完全一致のみACとしているので今回は使わない.
60+
61+
説明が面倒なので `a+b` をサンプルに作成してください.
62+
63+
なお,今回,問題の制約で指定する定数群は `constraints.h` に記載し,各generatorやvalidarorが参照するようにしましょう.
64+
65+
他にもrimeの機能はあるので,詳しく知りたい場合はこちら: https://rime.readthedocs.io/ja/latest/ (ただし,リンク先はver.1について述べているけど,rimeは最新はver.2)

0 commit comments

Comments
 (0)