FizzBuzzとユークリッドの互除法

http://jibun.atmarkit.co.jp/lcareer01/rensai/webten/08/01.html
FizzBuzzとかユークリッドの互除法書けないとダメだって。それも数分で書けないとダメらしい。なので書いたけど全然きれいじゃない感じする。ただ動くだけって感じだし、書くのに10分くらいかかった気がする。
出てきたコードだけじゃなくて、最初にテスト書くとか、コーディングの取り組み方でも実力が違いそう。ネット見てると一行で書いたりですごい。

FizzBuzz

冗長な書き方っぽい。関数に分ける事無いかもしれない。引数をnumberでチェックしてるけどこの方法だと不十分(http://qiita.com/items/465e715dae14e2f601de)なのでいっそ書かないほうがいいかも。

var isFizz = function(num) {
    // 3で割り切れたらfizz
    if (typeof num !== "number") return false;
    if (num % 3 === 0) return true;
    return false;
};
var isBuzz = function(num) {
    // 5で割り切れたらbuzz
    if (typeof num !== "number") return false;
    if (num % 5 === 0) return true;
    return false;
};

var resultAry = [];
for (var i = 1; i < 100; i++) {
    var result = "";
    var fizz = isFizz(i);
    var buzz = isBuzz(i);
    if (fizz) result += "Fizz";
    if (buzz) result += "Buzz";
    if (!fizz && !buzz) result += i;
    resultAry.push(result);
}
console.log(resultAry.join(","));

ユークリッドの互除法

知らなかったからwikipediaの解説読んだ。全部読むのは悔しいから下の引用部分だけ読んだ。引用部分にやり方の順番が書いてあったからコードにするのは割とすんなりできた。なのでズルかもしれない。
wikipedia:ユークリッドの互除法

2 つの自然数(または整式) a, b (a ≧ b) について、a の b による剰余を r とすると、 a と b との最大公約数は b と r との最大公約数に等しいという性質が成り立つ。この性質を利用して、 b を r で割った剰余、 除数 r をその剰余で割った剰余、と剰余を求める計算を逐次繰り返すと、剰余が 0 になった時の除数が a と b との最大公約数となる。

引数のチェックとか何もしてない。関数の名前もいつもよくわからないのつける。こういうのだとcalc*とかにしたほうがいいのかな。

var doEuclidean = function(x,y){
    var jouyo = x % y;
    if(jouyo === 0) return y;
    return doEuclidean(y,jouyo);
};

doEuclidean(1071, 1029);

反省

jsっていうかプログラム書き始めてちょうど一年くらい経つけど、まともに勉強しなかったから、すごく非常識なことやってる。文字列を返すことを期待してる関数でbooleanを返したりとか平気でやってるから気をつけたい。
あとハノイの塔も実装したい。