Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした