四六時中IYH このページをアンテナに追加 RSSフィード

2007-05-08

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問題 続き」に続く

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/R2M/20070508/1178646280