CでFizzBuzz

SoftwareDesignの総集編にそんな問題を見つけた。
1から100を表示する。3の倍数にはFizz、5の倍数にはBuzz、3と5の倍数にはFizzBuzzと表示する。
こんな問題、難しいことを考えなければ、すぐに解けるだろう。
で、この記事の前にはCode Golfが紹介されていたので、できるだけ文字数を少なくしてみた。出来上がったソースはこれ。

int a;main(){while(a++<100){printf(a%3?a%5?"%d":"":"Fizz",a);puts(a%5?"":"Buzz");}}

整理すると、

int a;
main(){
    while(a++<100){
        printf(a%3?a%5?"%d":"":"Fizz",a);
        puts(a%5?"":"Buzz");
    }
}

84byteでした。果たして、最短はどのくらいなのだろうか…?


ちょい省略。82byte。

int a;main(){while(a++<100)printf(a%3?a%5?"%d":0:"Fizz",a)&&puts(a%5?"":"Buzz");}

更に省略。77byte。

a;main(){while(a++<100)printf(a%3?a%5?"%d":0:"Fizz",a)&puts(a%5?"":"Buzz");}

更に更に省略。75byte。

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

1 comment


  1. Pingback: Java で FizzBuzz | I Wanna Be β

コメントを残す

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