【アルゴリズム】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から表示してみるとか。
アルゴリズムは頭でイメージできないと理解できないです。。
この記事が気に入ったらサポートをしてみませんか?