コードを短く書くことすべての情熱を注ぐ変態天才たちである。
彼が重宝するテクニックが、「コンマ演算子」。
これを使うと、
- ループの終了判定が標準入力から入力したものに依存するとき、breakを使わずに簡単に書ける。
- ループの括弧を省略することができる。(Pythonみたい。)
という利益を享受できる。
すばらしい。。。
百聞は一見に如かずということでソースコードを。
例によって、PKUの問題から。
私の回答はこんな感じ。
int main() {
int L, M, s, e;
while (scanf("%d %d", &L, &M), L++ && M) {
REP(i, M)
scanf("%d %d", &s, &e),
L -= e-s+1;
printf("%d\n", L);
}
return 0;
}
注目すべきは、「コンマ演算子」。
まず、whileの中について。ここでコンマを使用することにより、複数の処理を判定条件の中に埋め込むことができます。判定条件として判断されるのは、一番最後の部分(この場合は、L++ && M部分)です。
次に、REP()の中ループについて。ループの内容は2行ですが、括弧を使用していません。
これも「コンマ演算子」によってなせる技。。コンマで繋がれた処理は1行の処理とみなされます。
これは、是非ともマスターしたいテクニック!!!
でもやり過ぎは厳禁。業務でこんなの使いまくってたら殺されますね(笑)
0 件のコメント:
コメントを投稿