FizzBuzz問題 続き
int main(){ for(int i=1;i<101;i++){ printf(i%3?"%s":"Fizz%s",i%5?"":"Buzz"); printf(i%3&&i%5?"%d\n":"\n",i); } }
で
int main(){for(int i=1;i<101;i++){printf(i%3?"%s":"Fizz%s",i%5?"":"Buzz");printf(i%3&&i%5?"%d\n":"\n",i);}}
で107byte。
追記:
もいっちょ!
int main(){ for(int i=1;i<101;){ printf(i%3?i%5?"%s%d\n":"%s\n":"Fizz%s\n",i%5?"":"Buzz",i++); } }
で
int main(){for(int i=1;i<101;){printf(i%3?i%5?"%s%d\n":"%s\n":"Fizz%s\n",i%5?"":"Buzz",i++);}}
で94byte。まだまだか。
追追記:
よくよく考えたらmainの引数のargcには1が入っているわけで。
int main(int i){ while(i<101) printf(i%3?i%5?"%s%d\n":"%s\n":"Fizz%s\n",i%5?"":"Buzz",i++); }
と出来て
int main(int i){while(i<101)printf(i%3?i%5?"%s%d\n":"%s\n":"Fizz%s\n",i%5?"":"Buzz",i++);}
で90byte。やっぱりまだまだ詰められるもんなんだな。
追追追記:問題発生
cygwinのgccでコンパイルしたら結果が異なる…。i++の評価位置が違うッぽい…。
あとint main のintは削っても良いのか…。そうなると
main(int i){while(i<101)printf(i%3?i%5?"%s%d\n":"%s\n":"Fizz%s\n",i%5?"":"Buzz",i++);}
で86byte。又は
main(int i){for(;i<101;i++)printf(i%3?i%5?"%s%d\n":"%s\n":"Fizz%s\n",i%5?"":"Buzz",i);}
で87byte。