176 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			176 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| id: 5a23c84252665b21eecc7e78
 | |
| title: General FizzBuzz
 | |
| challengeType: 5
 | |
| forumTopicId: 302273
 | |
| dashedName: general-fizzbuzz
 | |
| ---
 | |
| 
 | |
| # --description--
 | |
| 
 | |
| Write a generalized version of [FizzBuzz](https://rosettacode.org/wiki/FizzBuzz) that works for any list of factors, along with their words.
 | |
| 
 | |
| 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.
 | |
| 
 | |
| 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.
 | |
| 
 | |
| The second parameter is the number for which the function should return a string as stated above.
 | |
| 
 | |
| # --hints--
 | |
| 
 | |
| `genFizzBuzz` should be a function.
 | |
| 
 | |
| ```js
 | |
| assert(typeof genFizzBuzz == 'function');
 | |
| ```
 | |
| 
 | |
| `genFizzBuzz([[3, "Fizz"],[5, "Buzz"]], 6)` should return a string.
 | |
| 
 | |
| ```js
 | |
| assert(
 | |
|   typeof genFizzBuzz(
 | |
|     [
 | |
|       [3, 'Fizz'],
 | |
|       [5, 'Buzz']
 | |
|     ],
 | |
|     6
 | |
|   ) == 'string'
 | |
| );
 | |
| ```
 | |
| 
 | |
| `genFizzBuzz([[3, "Fizz"],[5, "Buzz"]], 6)` should return `"Fizz"`.
 | |
| 
 | |
| ```js
 | |
| assert.equal(
 | |
|   genFizzBuzz(
 | |
|     [
 | |
|       [3, 'Fizz'],
 | |
|       [5, 'Buzz']
 | |
|     ],
 | |
|     6
 | |
|   ),
 | |
|   'Fizz'
 | |
| );
 | |
| ```
 | |
| 
 | |
| `genFizzBuzz([[3, "Fizz"],[5, "Buzz"]], 10)` should return `"Buzz"`.
 | |
| 
 | |
| ```js
 | |
| assert.equal(
 | |
|   genFizzBuzz(
 | |
|     [
 | |
|       [3, 'Fizz'],
 | |
|       [5, 'Buzz']
 | |
|     ],
 | |
|     10
 | |
|   ),
 | |
|   'Buzz'
 | |
| );
 | |
| ```
 | |
| 
 | |
| `genFizzBuzz([[3, "Buzz"],[5, "Fizz"]], 12)` should return `"Buzz"`.
 | |
| 
 | |
| ```js
 | |
| assert.equal(
 | |
|   genFizzBuzz(
 | |
|     [
 | |
|       [3, 'Buzz'],
 | |
|       [5, 'Fizz']
 | |
|     ],
 | |
|     12
 | |
|   ),
 | |
|   'Buzz'
 | |
| );
 | |
| ```
 | |
| 
 | |
| `genFizzBuzz([[3, "Buzz"],[5, "Fizz"]], 13)` should return `"13"`.
 | |
| 
 | |
| ```js
 | |
| assert.equal(
 | |
|   genFizzBuzz(
 | |
|     [
 | |
|       [3, 'Buzz'],
 | |
|       [5, 'Fizz']
 | |
|     ],
 | |
|     13
 | |
|   ),
 | |
|   '13'
 | |
| );
 | |
| ```
 | |
| 
 | |
| `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--
 | |
| 
 | |
| ```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;
 | |
| }
 | |
| ```
 |