FizzBuzz問題
寝る前にこんな物を見つけた。
「はてなブックマーク - どうしてプログラマに・・・プログラムが書けないのか」
とりあえずCで普通に書いたら
for(int i=1;i<101;i++){ if(i%3==0) printf("Fizz"); if(i%5==0) printf("Buzz"); if(i%3&&i%5) printf("%d",i); puts(""); }
で、変態的に書いたら
int c=0x30490610,d=c,e; for(int i=1;i<101;i++){ e=d&3; if(e&1) printf("Fizz"); if(e&2) printf("Buzz"); if(!e) printf("%d",i); if(e==3) d=c; else d>>=2; puts(""); }
まぁ長くて意味無いけど。
「anarchy golf - FizzBuzz」の所で最短コードランクが載っているんだがCで73byteってどうやるんだろう?
int main(){for(int i=1;i<101;i++){if(i%3==0)printf("Fizz");if(i%5==0)printf("Buzz");if(i%3&&i%5)printf("%d",i);puts("");}}
で122byteだしなぁ。
追記:
for(int i=1;i<101;i++){ printf(i%3?"%s":"Fizz%s",i%5?"":"Buzz"); if(i%3&&i%5) printf("%d",i); puts(""); }
って出来るか。そうすると、
int main(){for(int i=1;i<101;i++){printf(i%3?"%s":"Fizz%s",i%5?"":"Buzz");if(i%3&&i%5)printf("%d",i);puts("");}}
で112byte。まだまだ遠い。
「FizzBuzz問題 続き」に続く」