みかづきブログ その3

3ヶ月つづけてみました。

Fizz Buzzを出力してみよう。

FIzz Buzz とは

プレイヤーは円状に座る。最初のプレイヤーは「1」と数字を発言する。次のプレイヤーは直前のプレイヤーの次の数字を発言していく。ただし、3で割り切れる場合は 「Fizz」(Bizz Buzz の場合は 「Bizz」)、5で割り切れる場合は 「Buzz」、両者で割り切れる場合は 「Fizz Buzz」 (Bizz Buzz の場合は 「Bizz Buzz」)を数の代わりに発言しなければならない。発言を間違えた者や、ためらった者は脱落となる。

このゲームをコンピュータ画面に表示させるプログラムとして作成させることで、コードがかけないプログラマ志願者を見分ける手法を Jeff Atwood が FizzBuzz問題 (FizzBuzz Question)として提唱した。その提唱はインターネットの様々な場所で議論の対象になっている。
また、実際に「制限時間2分以内」「剰余(%記号等)を用いない」「1行でできる限り短く(ワンライナー)」等の縛りでゲーム条件を満たすコード記述の腕試しをする者が続出した。

Fizz Buzz - Wikipedia より引用


有名な問題ですが、なんだかんだで1度も挑戦したことがなかったので書いてみました。

(function(win, doc) {

    "use strict";
    
    fizzBuzz(100);
    
    function fizzBuzz(maxNum) {
        var i   = 1,
            msg = "";
        
        for (; i <= maxNum; i++) {
            if (!(i % 3)) {
                msg += "Fizz";
            }
            if (!(i % 5)) {
                msg += "Buzz";
            }
            
            doc.write((msg || i) + "<br />");
            msg = "";
        }
    }
    
})(this, document);

動作サンプル

まったくもって斬新さのないコードになってしまいましたが、まあこんなものでしょう。
今回は以上です。