プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

FizzBuzz問題の回答を書いてみた

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

どうしてプログラマに・・・プログラムが書けないのか?


はてなブックマークのコメントにみなさんソースコードを書かれているので、私もちょっと書いてみました。awk版はブックマークコメントに書きましたが、C版もblogに書いてみます。


アスキーに掲載されていた1行プログラムを思い出しましたよ。:)

/*
 *	FizzBuzz
 */
main()
{
	int	i;

#define IsPowerOf(v, p) (((v) % (p)) == 0)

	for (i = 1; i <= 100; i++) {
		if (IsPowerOf(i, 3) && IsPowerOf(i, 5))
			printf("FizzBuzz\n");
		else if (IsPowerOf(i, 3))
			printf("Fizz\n");
		else if (IsPowerOf(i, 5))
			printf("Buzz\n");
		else
			printf("%d\n", i);
	}
}


ひねりも何もないですな。最初の判定はIsPowerOf(i, 3 * 5)の方がいいのかな?上手な人はもっとエレガントに書くんだろうね。

ちゃんとしたプログラマであれば、これを実行するプログラムを2分とかからずに紙に書き出せるはずだ。怖い事実を聞きたい? ?コンピュータサイエンス学科卒業生の過半数にはそれができないのだ。自称上級プログラマが答えを書くのに10-15分もかかっているのを見たこともある。

どうしてプログラマに・・・プログラムが書けないのか?


ありゃ。10分もかかっちゃったよ。つまんないところにこだわりすぎな気もする。まあちゃんとしたプログラマじゃないから、いいよね!?(笑)