多分これが限界?

CでFizzBuzzの続き。
削りに削って、74byte。

main(a){for(;a<101;puts("Buzz"-a*a++%5))printf(a%3?a%5?"%d":0:"Fizz",a);}

だが、これはどっかから拾ってきたソースで、Ubuntuでは正しく動作しませんでした。もともと環境依存なプログラムなので仕方ないけど…。このプログラムはfor文のputs関数がミソで、-a*a%5の結果が0でない場合、”Buzz”より前のポインタをさすので、Buzzと表示されない仕組み(だと思う)。これは思いつかなかった…
IOCCCといい、プログラミングって可読性大事ですね

Programming

コメントを残す

メールアドレスが公開されることはありません。