LoginSignup
1

More than 5 years have passed since last update.

競プロでサンプルケースをテストするCLIを作った

Posted at

github.com/elzup/compep - Debug CLI for Competitive programming C++

compep run

↑ 左が CLI。右がエディタ。
C++ のコードを編集して保存すると、コンパイル、サンプルケースのテストをします。

Node.js で書きました。
ファイル変更の監視に fs.watch, 標準出力のカラーリングに chalk を使っています。

使い方

$ npm install --global compep
$ compep                            # コーディング用のディレクトリで

main.cpp をコーディング。
./testcase/main.testcase.txt にテストケースを書きます。

作業ディレクトリ構成

必要なファイル(main.cpp、テストケース)がない場合最初に作られます。

├── main.cpp
├── out
│   └── main.out
└── testcase
    └── main.testcase.txt

テストしたいケースを以下のフォーマットで書きます。

input values of case1
----
output values of case1
====
input values of case2
----
output values of case2

入力と出力を----区切り、それらのテストケースを==== 区切りです。(この辺はまだ軽くしか考えてないです)

使っていて思うこと

このテスト(というかチェック?)のしかたは AtCoder や Codeforces で使えるんですが TopCoder の形式には使えませんでした。

サンプルケースのコピペは面倒です。なので bookmarklet で問題ごとには一回で済ませられるようにしてます。
atcoder で使っているのはこれです。

javascript:var codes = [].map.call(document.querySelectorAll(".div-sample-copy"), function (e) { return e.nextSibling.innerHTML });var n = 2;var len = Math.round(codes.length/n,10);var ret = [];for(var i=0;i<len/2;i++){    ret.push( codes.slice( i*n, i*n+n ));}var text = ret.map(function (e) { return e.join("----\n"); }).join("====\n");document.write('<pre>' + text + '</pre>');

その他

私は Mac 環境を使っていて、競技プログラミングを C++ で書き始めたのは最近です。C++ (競技プログラミング)のデバッグ方法、作業環境はまだ考え中です。
いいプラグインがあるエディタやツールがあれば教えていただきたいですm(_ _)m。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1