コンパイル+実行

競技プログラミングとかで,コードを修正するたびにいちいち

g++ -o X -O2 -Wall X.cpp
./X < X.in

とか書くのはだるいので,go (Windowsだったらgo.bat)みたいなファイルに

g++ -o $1 -O2 -Wall $1.cpp && ./$1 < $1.in

みたいなのを書いておいて,実行するときは

./go X

みたいにしている.大体はこれで事は足りる.


ただ,これだけだと不十分なこともある.たとえば十分大きなテストケース(入力が10000個の数値からなる場合とか)でテストしたい場合,いくらエディタが便利だといってもそれをエディタで直接生成するのは難しいので,大きいテストケースを生成するプログラムを別に書くことになると思う.
そのときは今までは特に方法は固定してなくて,

g++ -o Xinput -O2 -Wall Xinput.cpp
./Xinput > X_.in
./go X # ここでコンパイルしてる...
./X < X_.in

とか超適当にやってたのだけど,さすがにそろそろ固定した方がいい気がしてきたので,適当に次のものを考えた.

g++ -o $1.tester -O2 -Wall $1.tester.cpp && ./$1.tester > $1.in.large && g++ -o $1 -O2 -Wall $1.cpp && ./$1 < $1.in.large

C++じゃなくてperlとかrubyでテストケース作りたい場合も多分似たような感じでできる.
まぁ,だからなんだって感じのエントリでしたはい.