mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-04-30 16:01:14 -04:00
2.6 KiB
2.6 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 5e6dd14797f5ce267c2f19d0 | Послідовність "подивися-і-скажи" | 1 | 385277 | look-and-say-sequence |
--description--
The Look and say sequence is a recursively defined sequence of numbers.
Визначення послідовності
- Візьміть десяткове число
- Подивітьсяна число, візуально групуючи цифри, які послідовно повторюються.
- Назвіть число зліва направо, група за групою; скільки таких цифр можливо.
Наприклад:
- Починаючи з цифри 1, у вас є одна цифра 1, яка формує число 11
- Починаючи з 11, ви маєте дві цифри 1. Тобто 21
- Починаючи з числа 21, ви маєте одну цифру 2, і одну цифру 1. Тобто (12) (11), які стають 1211
- Починаючи з числа 1211, ви маєте одну цифру 1, одну цифру 2, і дві цифри 1. Тобто (11)(12)(21), які стають 111221
--instructions--
Напишіть функцію, яка приймає рядок в якості параметра, обробляє його, і повертає результат.
--hints--
lookAndSay має бути функцією.
assert(typeof lookAndSay == 'function');
lookAndSay("1") повинен повернути рядок.
assert(typeof lookAndSay('1') == 'string');
lookAndSay("1") повинен повертати "11".
assert.equal(lookAndSay('1'), '11');
lookAndSay("11") повинен повертати "21".
assert.equal(lookAndSay('11'), '21');
lookAndSay("21") повинен повертати "1211".
assert.equal(lookAndSay('21'), '1211');
lookAndSay("1211") повинен повертати "111221".
assert.equal(lookAndSay('1211'), '111221');
lookAndSay("3542") повинен повертати "13151412".
assert.equal(lookAndSay('3542'), '13151412');
--seed--
--seed-contents--
function lookAndSay(str) {
}
--solutions--
function lookAndSay(str) {
return str.replace(/(.)\1*/g, function(seq, p1) {
return seq.length.toString() + p1;
});
}