* feat(tools): add seed/solution restore script * chore(curriculum): remove empty sections' markers * chore(curriculum): add seed + solution to Chinese * chore: remove old formatter * fix: update getChallenges parse translated challenges separately, without reference to the source * chore(curriculum): add dashedName to English * chore(curriculum): add dashedName to Chinese * refactor: remove unused challenge property 'name' * fix: relax dashedName requirement * fix: stray tag Remove stray `pre` tag from challenge file. Signed-off-by: nhcarrigan <nhcarrigan@gmail.com> Co-authored-by: nhcarrigan <nhcarrigan@gmail.com>
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;
|
|
}
|
|
```
|