KEIS BLOGは株式会社ケイズ・ソフトウェアが運営しています。

KEIS BLOG

プログラマならできて当たり前、fizzbuzz問題


こんにちは、松野です。

さっそくですが、みなさんはFizzBuzz問題をといたことがありますか?
3の倍数のときにFizz 5の倍数のときにBuzz 3と5の倍数のときにFizzBuzzと出力するアレです。

どこかの研究によると、プログラマを目指してはいるけどこんなプログラムもかけない人もいるとかいないとか。
当然皆さんはすらすらかけますよね?

以下普通に書いたJavaソース

※条件:1-100の数字を出力して、3の倍数の場合はFizz, 5の倍数の場合はBuzz,3と5の倍数のときはFizzBuzz,と出力する

public class FizzBuzz{
public static void main(String[] args){
for(int i = 1; i <= 100; i ++){
if(i % 15 == 0){
System.out.println("FizzBuzz");
}else if(i % 3 == 0){
System.out.println("Fizz");
}else if(i % 5 == 0){
System.out.println("Buzz");
}else{
System.out.println(i);
}
}
}
}

デバッグも実行もしてないので実際動くかどうかわからないですが、まぁたぶん動くでしょう。

じゃあこれとショートコードを合わせてみるとどうでしょうか。

たとえばJavaでどれだけ短くこのFizzBuzzをかけるか や
Perl, Pythonで以下に短くしてこのFizzBuzzをかけるかをやってみてください。

こういう縛りを入れることで、ぐっとコードを書く楽しさが増えますよ!

ちなみにJavaでのショートコードはこちら(97byte)

enum f{a;{for(int i=0;++i<101;)System.out.println((i%3<1?"Fizz":"")+(i%5<1?"Buzz":i%3<1?"":i));}}

うーん、素敵!

 

【関連記事】
ハニーポットについて (1)サーバーを立てる
ハニーポットについて (2)アクセスログ有効活用方法
TopCoderをやろう!
TopCoderをやろう 等差数列の問題
今月はTopcoderじゃなくてCodeIQ!
俺googleのページランクのアルゴリズム知ってるんだぜ!
サメの種類と生態
プログラマならできて当たり前、fizzbuzz問題