Page List

Search on the blog

2010年10月5日火曜日

ショートコーディング(1) : if文はお嫌い!?

最近、ショートコーディングの本を買った。なかなか面白い。
環境依存のテクニックだったり、コンテスト専用のチートコードの作成方法だったりと、必ずしもすべてが皆に有用かと言われるとそうではないが、学ぶべきものはたくさんある。

今日は、その中で面白いと思ったものを紹介します。
とりあえず、次のコードを見てください。

int main() {
REP(i, 10)
i % 2 && printf("%d\n", i);

REP(i, 10)
i % 3 || printf("%d サン!\n", i);

REP(i, 10)
i ? printf("%lf\n", 1.0 / i) : puts("Zero Devider");

return 0;
}
何をやっているか分かりますか?2つ目のループは3の倍数のときだけアホになってます。

ショートコーダーはif文を基本的に書かないらしいです(笑)
確かにこっちの方が短く書けますね!
以下に対応表をまとめます。

分岐文対応するショートコーディング文
if(hogehoge) dohogehoge && do
if(!hogehoge) dohogehoge || do
if(hogehoge) do1 else do2hogehoge ? do1 : do2

これで、今日からあなたもショートコーダー!!

0 件のコメント:

コメントを投稿