私が通っているスクールで、FizzBuzz問題を解いてこい!っていう課題が出たので、ついでに記事にします。もっとこうした方がきれいに書けるよ!記事として読みやすいよ!等ありましたら、是非コメントお願いします。
スクールHP↓
SUNABACO
FizzBuzz問題
0~100までの数字を出力する。そのうち、3の倍数で「Fizz」、5の倍数で「Buzz」と出力する。ただし、両方の倍数の場合は「FizzBuzz」と出力する。
(1~任意の数字までを出力するというのが一般的みたいです。)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 …
↓
FizzBuzz 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz …
といった具合
条件整理
- 0~100までの数字を出力する
- 3の倍数の場合は「Fizz」
- 5の倍数の場合は「Buzz」
- 3、5両方の倍数の場合は「FizzBuzz」とする
- 1~4の条件を組み合わせる
実際に解いてみる
- 0~100までの数字を出力する
for (let i = 0; i < 101; i++) { console.log(i) }
- 3の倍数の場合は「Fizz」
3の倍数=3で割り切れる数 なので、
i % 3 === 0
をif文の条件とする。5、15の倍数も同様for (let i = 0; i < 101; i++) { if (i % 3 === 0) { console.log("Fizz"); } }
- 5の倍数の場合は「Buzz」
for (let i = 0; i < 101; i++) { if (i % 5 === 0) { console.log("Buzz"); } }
- 3、5両方の倍数の場合は「FizzBuzz」とする
3、5両方、つまり15の倍数の場合は
for (let i = 0; i < 101; i++) { if (i % 15 === 0) { console.log("FizzBuzz"); } }
- 1~4の条件を組み合わせる
ここで、FizzBuzz条件のif文を最初に置くのがポイント。Fizz、Buzz条件のif文を先に置いてしまうと、そちらの条件に引っかかってしまう。
for (let i = 0; i < 101; i++) { if (i % 15 === 0) { console.log("FizzBuzz"); } else if (i % 5 === 0) { console.log("Buzz"); } else if (i % 3 === 0) { console.log("Fizz"); } else { console.log(i); } }
おまけ
0はFizzBuzzの条件の例外としてそのまま出力する、というおまけ?課題も出たので、載せておきます。
for (let i = 0; i < 101; i++) { if (i % 15 === 0 && i !== 0) { console.log("FizzBuzz"); } else if (i % 5 === 0 && i !== 0) { console.log("buzz"); } else if (i % 3 === 0 && i !== 0) { console.log("fizz"); } else { console.log(i); } }