FizzBuzzテストやってみる

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

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

いくつかの言語でやってみたが、とりあえず最低限は大丈夫っぽかったw。

たとえば面接時には、FizzBuzzのようなコードを書いてもらって、これをネタに話を広げていけるかどうかをやってみるってのも面白いんじゃないかとおもった。一緒に仕事できるかどうかをどうやって判断するかってのはけっこう悩むところですし。課題もコードも簡単であることで、いろいろな方向に広げられるところがいい。広げ方としては、コーディングスタイルについて話すとか、アウトプットのスタイルを変えるとか、構造を変えるとか、別のライブラリを使うとか、言語を変えるとか、いろいろできそうです。

Haskellでの例

toFizzBuzz :: Integer -> String
toFizzBuzz num 
    | mod num 3 == 0 && mod num 5 == 0 = "FizzBuzz"
    | mod num 3 == 0 = "Fizz"
    | mod num 5 == 0 = "Buzz"
    | otherwise = show num

main = do
    mapM (\i -> putStrLn $ toFizzBuzz i) [1..100]
    return ()
    

mapM_のがいいか。ghc-6.6で実行させるのは初だったけど、Dataパッケージがだいぶ変わってたのに気がつきました^^;