Page List

Search on the blog

2010年10月5日火曜日

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

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

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

  1. int main() {  
  2. REP(i, 10)  
  3.     i % 2 && printf("%d\n", i);  
  4.   
  5. REP(i, 10)  
  6.     i % 3  || printf("%d サン!\n", i);  
  7.   
  8. REP(i, 10)  
  9.     i ? printf("%lf\n", 1.0 / i) : puts("Zero Devider");  
  10.   
  11. return 0;  
  12. }  
何をやっているか分かりますか?2つ目のループは3の倍数のときだけアホになってます。

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

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

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

0 件のコメント:

コメントを投稿