if,三項演算子,%演算子,除算縛りでFizz Buzz[修正]
なかなか面白いなと思ったのですが、もう少しすっきり書けるのではないかという気がしたので適当に自分でもやって見ることにしました。
ただしコードの短縮のために%だけは使わせていただくことにしました。
とりあえずprintfの引数をもっと短くすることだけを考えて組みました。
#include
int main(){
int i = 0;
for(i=1;i<100;i++)
{
printf("%d\0 Fizz\0 FizzBuzz"+(!(i%3)*4+!(i%5)*14-!(i%15)*8),i);
puts("");
}
}
puts("");としているのは、分かりやすさを重視してのことです。
まぁこれでもFizzの部分が重複しているので美しくないといえば美しくないですね。
あとは"%d\0 FizzBuzz"として、15で割れないときに4文字だけ出力するという処理も考えたのですが、最終的にあんまり短くまとまらなかったので諦めました。
上のコード、まだイマイチだったので下の形にまとめ直します。 余計な部分がなくなって、とてもスッキリ!
(よい子の皆さんは、(もちろんこんなコードでも動きますが)だからといって真似しないようにしてくださいね!)