見出し画像

【アルゴリズム】javascriptでFizzBuzzを解いてみる。

超有名な問題です。プログラムを始めたばかりの人は、ぜひチャレンジしてみよう。

連続する整数で、3の倍数であればFizzを表示、5倍数でBuzzを表示、3かつ5の倍数であればFizzBuzzを表示させる。

ロジックは

1.  ループを回す。(少なくとも15回以上回してください。)

2.「3」かつ「5」の割り切れればFizzBuzzを表示。

3.「3」で割り切れればFizz。

4.「5」で割り切れればBuzz。

5.いずれでもなけれ「i」を表示。

一般的な解法

function fizzBuzz() {
 for (let i = 1; i <= 100; i++) {
   if (i % 3 === 0 && i % 5 === 0) {
     console.log("FizzBuzz");
   } else if (i % 3 === 0) {
     console.log("Fizz");
   } else if (i % 5 === 0) {
     console.log("Buzz");
   } else {
     console.log(i);
   }
 }
}

ES6 三項演算子

const es6FizzBuzz = num => {
 for (var i = 1; i <= num; i++) {
   console.log(
     i % 3 === 0 && i % 5 === 0
       ? "Fizzbuzz"
       : i % 5 === 0
       ? "Buzz"
       : i % 3 === 0
       ? "Fizz"
       : i
   );
 }
};

ちょっと短くして、三項演算子版。

ポイントは3かつ5の倍数の評価を、一番最初に持ってこれるかです。でないと、例えばループで15になった場合、先に3の倍数を評価してしまいます。5の場合も然り。

また3かつ5の倍数って、言い換えれば15の最小公倍数ですね。

if (i % 15 === 0)

アルゴリズムを実装するポイントは、いきなり全部書こうとしないで、確実に分かる部分から処理して行くことです。今回の場合、単純にFizzから表示してみるとか。


アルゴリズムは頭でイメージできないと理解できないです。。




この記事が気に入ったらサポートをしてみませんか?