2018-10-04 14:37:37 +01:00
---
id: 5a23c84252665b21eecc7e78
2020-11-27 19:02:05 +01:00
title: General FizzBuzz
2018-10-04 14:37:37 +01:00
challengeType: 5
2019-08-05 09:17:33 -07:00
forumTopicId: 302273
2021-01-13 03:31:00 +01:00
dashedName: general-fizzbuzz
2018-10-04 14:37:37 +01:00
---
2020-11-27 19:02:05 +01:00
# --description--
Write a generalized version of [FizzBuzz ](https://rosettacode.org/wiki/FizzBuzz ) that works for any list of factors, along with their words.
2018-10-04 14:37:37 +01:00
This is basically a "fizzbuzz" implementation where the rules of the game are supplied to the user. Create a function to implement this. The function should take two parameters.
2020-11-27 19:02:05 +01:00
The first will be an array with the FizzBuzz rules. For example: `[ [3, "Fizz"] , [5, "Buzz"] ]` .
This indicates that `Fizz` should be printed if the number is a multiple of 3 and `Buzz` if it is a multiple of 5. If it is a multiple of both then the strings should be concatenated in the order specified in the array. In this case, `FizzBuzz` if the number is a multiple of 3 and 5.
2018-10-04 14:37:37 +01:00
The second parameter is the number for which the function should return a string as stated above.
2020-11-27 19:02:05 +01:00
# --hints--
`genFizzBuzz` should be a function.
```js
assert(typeof genFizzBuzz == 'function');
2018-10-04 14:37:37 +01:00
```
2020-11-27 19:02:05 +01:00
`genFizzBuzz([[3, "Fizz"],[5, "Buzz"]], 6)` should return a string.
2018-10-04 14:37:37 +01:00
2020-11-27 19:02:05 +01:00
```js
assert(
typeof genFizzBuzz(
[
[3, 'Fizz'],
[5, 'Buzz']
],
6
) == 'string'
);
```
2018-10-04 14:37:37 +01:00
2020-11-27 19:02:05 +01:00
`genFizzBuzz([[3, "Fizz"],[5, "Buzz"]], 6)` should return `"Fizz"` .
2018-10-04 14:37:37 +01:00
```js
2020-11-27 19:02:05 +01:00
assert.equal(
genFizzBuzz(
[
[3, 'Fizz'],
[5, 'Buzz']
],
6
),
'Fizz'
);
```
2020-09-15 09:57:40 -07:00
2020-11-27 19:02:05 +01:00
`genFizzBuzz([[3, "Fizz"],[5, "Buzz"]], 10)` should return `"Buzz"` .
```js
assert.equal(
genFizzBuzz(
[
[3, 'Fizz'],
[5, 'Buzz']
],
10
),
'Buzz'
);
2018-10-04 14:37:37 +01:00
```
2020-11-27 19:02:05 +01:00
`genFizzBuzz([[3, "Buzz"],[5, "Fizz"]], 12)` should return `"Buzz"` .
```js
assert.equal(
genFizzBuzz(
[
[3, 'Buzz'],
[5, 'Fizz']
],
12
),
'Buzz'
);
```
2018-10-04 14:37:37 +01:00
2020-11-27 19:02:05 +01:00
`genFizzBuzz([[3, "Buzz"],[5, "Fizz"]], 13)` should return `"13"` .
2018-10-04 14:37:37 +01:00
2020-11-27 19:02:05 +01:00
```js
assert.equal(
genFizzBuzz(
[
[3, 'Buzz'],
[5, 'Fizz']
],
13
),
'13'
);
```
2018-10-04 14:37:37 +01:00
2020-11-27 19:02:05 +01:00
`genFizzBuzz([[3, "Buzz"],[5, "Fizz"]], 15)` should return `"BuzzFizz"` .
```js
assert.equal(
genFizzBuzz(
[
[3, 'Buzz'],
[5, 'Fizz']
],
15
),
'BuzzFizz'
);
```
`genFizzBuzz([[3, "Fizz"],[5, "Buzz"]], 15)` should return `"FizzBuzz"` .
```js
assert.equal(
genFizzBuzz(
[
[3, 'Fizz'],
[5, 'Buzz']
],
15
),
'FizzBuzz'
);
```
`genFizzBuzz([[3, "Fizz"],[5, "Buzz"],[7, "Baxx"]], 105)` should return `"FizzBuzzBaxx"` .
```js
assert.equal(
genFizzBuzz(
[
[3, 'Fizz'],
[5, 'Buzz'],
[7, 'Baxx']
],
105
),
'FizzBuzzBaxx'
);
```
# --seed--
## --seed-contents--
```js
function genFizzBuzz(rules, num) {
}
```
# --solutions--
2018-10-04 14:37:37 +01:00
```js
function genFizzBuzz(rules, num) {
2018-10-20 21:02:47 +03:00
let res='';
2018-10-04 14:37:37 +01:00
rules.forEach(function (e) {
if(num % e[0] == 0)
res+=e[1];
})
2018-10-20 21:02:47 +03:00
if(res==''){
2018-10-04 14:37:37 +01:00
res=num.toString();
}
return res;
}
```