Twitterにコードを投稿して自己満足するキャンペーン1:FizzBuzz
コードを自分の限界まで短くしてつぶやくキャンペーンなのです。
今回はFizzBuzzなのです。
#include <stdio.h> int main(){for(int i=0,t,f;i++<100;){t=i%3;f=i%5;printf(!t^!f?t?"Buzz":"Fizz":t?"%d":"FizzBuzz",i);puts("");}return 0;}
分かりやすく改行、括弧、コメントをつけるとこう。
#include <stdio.h> int main() { for (int i = 0, t, f; i++ < 100;) { // 3と5で割り切れるか判別する変数 t = i % 3; f = i % 5; // tとfを一旦否定することで値を0か1に絞って、XORで同じか違うか判別。 // あとはどちらにせよ片方を判別すればもう片方が分かる。 printf(!t ^ !f ? (t ? "Buzz" : "Fizz") : (t ? "%d" : "FizzBuzz"), i); // ただの改行 puts(""); } return 0; }
あーなんて低レベルなんだ。誰も面白く無いというのに。俺は面白いけどな!