mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-05-26 04:01:17 -04:00
4.9 KiB
4.9 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 5ea281203167d2b0bdefca00 | Ігрові числа | 1 | 385282 | ludic-numbers |
--description--
Ludic numbers are related to prime numbers as they are generated by a sieve quite like the Sieve of Eratosthenes is used to generate prime numbers.
Перше ігрове число - це 1.
Щоб згенерувати наступні ігрові числа, створіть масив зі зростаючих цілих чисел, починаючи від 2.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...
(Цикл)
- Візьміть перший член результатного масиву як наступне ігрове число 2.
- Видаліть кожен 2й пронумерований абзац із масиву (включно з першим).
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...
- (Прокрутка декількох циклів...)
- Візьміть перший член результатного масиву як наступне ігрове число 3.
- Видаліть кожен 3й пронумерований абзац із масиву (включно з першим).
3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 ...
- Візьміть перший член результатного масиву як наступне ігрове число 5.
- Видаліть кожен 5й пронумерований абзац із масиву (включно з першим).
5 7 11 13 17 19 23 25 29 31 35 37 41 43 47 49 53 55 59 61 65 67 71 73 77 ...
- Візьміть перший член результатного масиву як наступне ігрове число 7.
- Видаліть кожен 7й пронумерований абзац із масиву (включно з першим).
7 11 13 17 23 25 29 31 37 41 43 47 53 55 59 61 67 71 73 77 83 85 89 91 97 ...
- ...
- Візьміть перший член поточного масиву як наступне ігрове числоL.
- Видаліть кожен Lй пронумерований абзац із масиву (включно з першим).
- ...
--instructions--
Запишіть функцію, яка повертає всі ігрові числа, які є меншими або дорівнюють даному числу.
--hints--
ludic має бути функцією.
assert(typeof ludic === 'function', '<code>ludic</code> should be a function.');
ludic(2) має повернути масив.
assert(Array.isArray(ludic(2)));
ludic(2) має повернути [1, 2].
assert.deepEqual(ludic(2), [1, 2]);
ludic(3) має повернути [1, 2, 3].
assert.deepEqual(ludic(3), [1, 2, 3]);
ludic(5) має повернути [1, 2, 3, 5].
assert.deepEqual(ludic(5), [1, 2, 3, 5]);
ludic(20) має повернути [1, 2, 3, 5, 7, 11, 13, 17].
assert.deepEqual(ludic(20), [1, 2, 3, 5, 7, 11, 13, 17]);
ludic(26) має повернути [1, 2, 3, 5, 7, 11, 13, 17, 23, 25].
assert.deepEqual(ludic(26), [1, 2, 3, 5, 7, 11, 13, 17, 23, 25]);
--seed--
--seed-contents--
function ludic(n) {
}
--solutions--
function ludic(n) {
const makeArr = (s, e) => new Array(e + 1 - s).fill(s).map((e, i) => e + i);
const filterAtInc = (arr, n) => arr.filter((e, i) => (i + 1) % n);
const makeLudic = (arr, result) => {
const iter = arr.shift();
result.push(iter);
return arr.length ? makeLudic(filterAtInc(arr, iter), result) : result;
};
const ludicResult = makeLudic(makeArr(2, n), [1]);
return ludicResult;
}