DTPab

DTPにまつわるあれこれ

JavaScriptでFizz Buzz

お遊びついでということで、Fizz Buzzもやってみました。
普通にやってもつまらないので、Fizz Buzzだけで3種類です。

普通にFizz Buzz

for (var i=1; i<=100; i++){
    if (i%3 === 0 && i%5 === 0) $.writeln("Fizz Buzz");
    else if (i%3 === 0) $.writeln("Fizz");
    else if (i%5 === 0) $.writeln("Buzz");
    else $.writeln(i);
}

おそらくいちばんシンプルなFizz Buzz。

配列とArray.joinメソッドでFizz Buzz

for (var i=1; i<=100; i++){
    var say = [];
    if (i%3 === 0) say.push("Fizz");
    if (i%5 === 0) say.push("Buzz");
    if (i%3 !== 0 && i%5 !== 0) say.push(i);
    $.writeln(say.join(" "));
}

今度は配列を使ってみました。
先の普通のFizz Buzzと違うのは、例えば「3の倍数でFizzではなくBizzにする」とか「FizzとBuzzの間を|にする」とか「コンソールじゃなくてalertにする」といった修正が1箇所で済むというところです。

剰余演算子%を使わずFizz Buzz

var Fizz = 3, Buzz = 5;
var count = [Fizz, Buzz];
for (var i=1; i<=100; i++){
    if (i === count[0] && i === count[1]){
        $.writeln("Fizz Buzz");
        count[0] += Fizz;
        count[1] += Buzz;
    } else if (i === count[0]){
        $.writeln("Fizz");
        count[0] += Fizz;
    } else if (i === count[1]){
        $.writeln("Buzz");
        count[1] += Buzz;
    } else {
        $.writeln(i);
    }
}

最後は、剰余演算子%を使わずに書いてみました。

さすがに「Switch文で…」は書きたくないのでやめましたw