--- id: 5a23c84252665b21eecc7e78 title: 一般的な FizzBuzz プログラム challengeType: 5 forumTopicId: 302273 dashedName: general-fizzbuzz --- # --description-- [FizzBuzz](https://rosettacode.org/wiki/FizzBuzz) プログラムの一般化されたバージョンを記述します。このバージョンは、倍数と単語を含むあらゆるリストに適しています。 これは基本的に、このゲームのルールをユーザーに提供する "fizzbuzz" 実装です。 これを実装する関数を作成します。 この関数は 2 つのパラメーターを取得する必要があります。 1つ目は、FizzBuzz ルールの配列です。 例: `[ [3, "Fizz"] , [5, "Buzz"] ]`. これは、数値が 3 の倍数の場合、 `Fizz` が出力され、5の倍数の場合、 `Buzz` が出力されることを示します。 両方の倍数であれば、文字列は配列で指定された順番で連結される必要があります。 このケースでは、数値が 3 と 5 の倍数の場合、 `FizzBuzz` となります。 2 つ目のパラメーターは、関数が上記のように文字列を返す対象となる数値です。 # --hints-- `genFizzBuzz` は関数とします。 ```js assert(typeof genFizzBuzz == 'function'); ``` `genFizzBuzz([[3, "Fizz"],[5, "Buzz"]], 6)` は文字列を返す必要があります。 ```js assert( typeof genFizzBuzz( [ [3, 'Fizz'], [5, 'Buzz'] ], 6 ) == 'string' ); ``` `genFizzBuzz([[3, "Fizz"],[5, "Buzz"]], 6)` は`"Fizz"`を返す必要があります。 ```js assert.equal( genFizzBuzz( [ [3, 'Fizz'], [5, 'Buzz'] ], 6 ), 'Fizz' ); ``` `genFizzBuzz([[3, "Fizz"],[5, "Buzz"]], 10)` は`"Buzz"`を返す必要があります。 ```js assert.equal( genFizzBuzz( [ [3, 'Fizz'], [5, 'Buzz'] ], 10 ), 'Buzz' ); ``` `genFizzBuzz([[3, "Buzz"],[5, "Fizz"]], 12)` は、`"Buzz"`を返す必要があります。 ```js assert.equal( genFizzBuzz( [ [3, 'Buzz'], [5, 'Fizz'] ], 12 ), 'Buzz' ); ``` `genFizzBuzz([[3, "Buzz"],[5, "Fizz"]], 13)` は`"13"`を返す必要があります。 ```js assert.equal( genFizzBuzz( [ [3, 'Buzz'], [5, 'Fizz'] ], 13 ), '13' ); ``` `genFizzBuzz([[3, "Buzz"],[5, "Fizz"]], 15)`は`"BuzzFizz"`を返す必要があります。 ```js assert.equal( genFizzBuzz( [ [3, 'Buzz'], [5, 'Fizz'] ], 15 ), 'BuzzFizz' ); ``` `genFizzBuzz([[3, "Fizz"],[5, "Buzz"]], 15)` は`"FizzBuzz"`を返す必要があります。 ```js assert.equal( genFizzBuzz( [ [3, 'Fizz'], [5, 'Buzz'] ], 15 ), 'FizzBuzz' ); ``` `genFizzBuzz([[3, "Fizz"],[5, "Buzz"],[7, "Baxx"]], 105)` は`"FizzBuzzBaxx"`を返す必要があります。 ```js assert.equal( genFizzBuzz( [ [3, 'Fizz'], [5, 'Buzz'], [7, 'Baxx'] ], 105 ), 'FizzBuzzBaxx' ); ``` # --seed-- ## --seed-contents-- ```js function genFizzBuzz(rules, num) { } ``` # --solutions-- ```js function genFizzBuzz(rules, num) { let res=''; rules.forEach(function (e) { if(num % e[0] == 0) res+=e[1]; }) if(res==''){ res=num.toString(); } return res; } ```