176 lines
3.2 KiB
Markdown
176 lines
3.2 KiB
Markdown
|
---
|
||
|
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;
|
||
|
}
|
||
|
```
|