見出し画像

GAS中級講座 事前課題【課題3】全員参加型FizzBuzz問題リレー

FizzBuzz問題

数字を1から順に100までデバッグ出力します。
ただし
・数字が3の倍数のときには数字の代わりに「Fizz」
・数字が5の倍数のときには数字の代わりに「Buzz」
・数字が3の倍数かつ5の倍数のときには代わりに「FizzBuzz」
と出力するようにしてください。
一つ条件がありまして、「他の参加者と同じ解答をしてはいけません」。

私はこんな感じの、switch文で提出しました。
スタートとターゲットの値を最初にconstしとくと、数字の範囲を変えたいときにもいいかなーっていう考え方です。

switchでは、5の倍数かつ3の倍数という関門は、&&の論理演算子(左辺と右辺がいずれもTRUEならTRUE)で最初に入れて、
5の倍数、3の倍数は ===の比較演算子で左辺と右辺が等しければTRUE。

function myFizzBuzz() {
 const target = 100;
 const startNumber = 1;
 for (let i = startNumber; i <= target; i = i + 1) {
   switch (true) {
     case (i % 5 === 0 && i % 3 === 0):
       console.log("FizzBuzz");
       break;
     case (i % 5 === 0):
       console.log("Buzz");
       break;
     case (i % 3 === 0):
       console.log("Fizz");
       break;
     default:
       console.log(i);
   }
 }
}


↓他の回答を見ていると、こんな感じの書き方があって、おお~すげ~となった。シンプルできれいでわかりやすくていいな。

function myFunction_FizzBuzz() {
 for(let i=1; i<=100; i++){
   let x = 0;
   if(i % 3 === 0){x += 1;};
   if(i % 5 === 0){x += 2;};
   switch(x){
     case 0: console.log(i); break;
     case 1: console.log('Fizz'); break;
     case 2: console.log('Buzz'); break;
     case 3: console.log('FizzBuzz'); break;
   }
 }
}

その他、同期の回答は自分のスクリプトにメモって、こういう書き方もあるのか~と眺めてはニヤニヤしています。
クラスを使っていた方もいて、クラスが何なのかわからないので追々理解できるとよいな~。

いただいたサポートで、書籍代や勉強費用にしたり、美味しいもの食べたりします!