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; | ||
|  | } | ||
|  | ``` |