Fizz-Buzz問題
Fizz-Buzz問題というのがあるらしい。
休出でひたすらデバッグしてたときに隣の人からこんなんあるよって紹介された。で,ぱっと考えた結果は下記のようなもの(ここにコードを書く都合上インデントの都合上日本語スペースを入れています)。言語はとりあえずC。
int main() {
for(int i = 1; i <= 100; i++) {
printf("%d\n", i);
if(i % 3 == 0) printf("Fizz");
if(i % 5 == 0) printf("Buzz");
printf("\n");
}
}
15の倍数なんて放っておいて単に3の倍数と5の倍数をそれぞれ処理してやれば良いだけのような気がするが……。むしろ逆にこれじゃまずいのかと裏を考えたくなる。
ちなみに処理を考えるのは10秒ぐらいでできましたが,コードを書いてたら見事に2分を超えました orz。CコンパイラがMac OSしかなかったのでsshで入ってviで書いたのがまずかったのか(と言い訳を)。
こういう小物プログラムって,プログラムの原理(?)とかを問う問題として私の出身大学では試験でよく出ていた気がする。ここギコさんの所で「再帰」なんてキーワードを見てふと思い出したが,編入か大学院かどっちかの試験の時にフィボナッチ数列を2種類の方法(forループを使う方法と使わない方法)でプログラム組めとかあったなぁ。今となってはなつかしい思い出だ。

コメントする