« 実家のPCバージョンアップ | トップページ | Oracle ELSIF »

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両方の倍数の場合には~」という点をそのままコードで表現している点は、「仕様書を素直にコードに落としていること」という職業プログラマの習性か・・・

|

« 実家のPCバージョンアップ | トップページ | Oracle ELSIF »

「駄文」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/18498/7259972

この記事へのトラックバック一覧です: FizzBuzz問題:

» FizzBuzz問題 [LibertyBoy]
使えないプログラマーさんのところで、面白い記事を見つけました。 使えないプログラマー: FizzBuzz問題 元ネタはこ... [続きを読む]

受信: 2007年8月25日 (土) 01時20分

» [コンピューター]使えないプログラマー: FizzBuzz問題 [unibonの日記]
http://tukaenai-pg.cocolog-nifty.com/blog/2007/07/fizzbuzz_51bf.html FizzBuzz問題FizzBuzz問題というプログラマ適性問題(?)が話題になっているらしい。 以下、(http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm)から引用 「1から100までの... [続きを読む]

受信: 2007年10月 1日 (月) 22時35分

« 実家のPCバージョンアップ | トップページ | Oracle ELSIF »