FizzBuzz問題
FizzBuzz問題というプログラマ適性問題(?)が話題になっているらしい。
以下、(http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm)から引用
「1から100までの数をプリントするプログラムを書け。
ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
ちゃんとしたプログラマであれば、これを実行するプログラムを2分とかからずに紙に書き出せるはずだ。
怖い事実を聞きたい? コンピュータサイエンス学科卒業生の過半数にはそれができないのだ。
自称上級プログラマが答えを書くのに10-15分もかかっているのを見たこともある。」
引用終わり
C#で書いてみた。パッと思いつくとこんな感じかな。
すぐに思いつくが2分とかからずというのは難しいなぁ。
static void Main(string[] args)
{
for(int i = 1; i <= 100; i++)
{
if (i % 3 == 0 && i % 5 ==0)
{
Console.WriteLine("FizzBuzz");
}
else if (i % 3 == 0)
{
Console.WriteLine("Fizz");
}
else if (i % 5 == 0)
{
Console.WriteLine("Buzz");
}
else
{
Console.WriteLine(i.ToString());
}
}
}
見直してみると「if (i % 3 == 0 && i % 5 ==0)」を「if (i % 15 == 0)」とした方がスマートだと思う。
しかし「3と5両方の倍数の場合には~」という点をそのままコードで表現している点は、「仕様書を素直にコードに落としていること」という職業プログラマの習性か・・・
| 固定リンク
「駄文」カテゴリの記事
- (2011.04.05)
- コミュファ開通(2008.06.27)
- コミュファ(2008.05.22)
- F1 第1、2戦を見て(2008.03.27)
- ヘッドホン購入(2008.03.12)


コメント