---
id: 5e6dd14797f5ce267c2f19d0
title: Послідовність "подивися-і-скажи"
challengeType: 5
forumTopicId: 385277
dashedName: look-and-say-sequence
---
# --description--
[Послідовність "подивися-і-скажи" ](https://en.wikipedia.org/wiki/Look and say sequence) - це рекурсивна послідовність певних чисел.
Визначення послідовності
- Візьміть десяткове число
- Подивітьсяна число, візуально групуючи цифри, які послідовно повторюються.
- Назвіть число зліва направо, група за групою; скільки таких цифр можливо.
Це число стає наступним у послідовності.
Наприклад:
- Починаючи з цифри 1, у вас є одна цифра 1, яка формує число 11
- Починаючи з 11, ви маєте дві цифри 1. Тобто 21
- Починаючи з числа 21, ви маєте одну цифру 2, і одну цифру 1. Тобто (12) (11), які стають 1211
- Починаючи з числа 1211, ви маєте одну цифру 1, одну цифру 2, і дві цифри 1. Тобто (11)(12)(21), які стають 111221
# --instructions--
Напишіть функцію, яка приймає рядок в якості параметра, обробляє його, і повертає результат.
# --hints--
`lookAndSay` повинен бути функцією.
```js
assert(typeof lookAndSay == 'function');
```
`lookAndSay("1")` повинен повернути рядок.
```js
assert(typeof lookAndSay('1') == 'string');
```
`lookAndSay("1")` повинен повертати `"11"`.
```js
assert.equal(lookAndSay('1'), '11');
```
`lookAndSay("11")` повинен повертати `"21"`.
```js
assert.equal(lookAndSay('11'), '21');
```
`lookAndSay("21")` повинен повертати `"1211"`.
```js
assert.equal(lookAndSay('21'), '1211');
```
`lookAndSay("1211")` повинен повертати `"111221"`.
```js
assert.equal(lookAndSay('1211'), '111221');
```
`lookAndSay("3542")` повинен повертати `"13151412"`.
```js
assert.equal(lookAndSay('3542'), '13151412');
```
# --seed--
## --seed-contents--
```js
function lookAndSay(str) {
}
```
# --solutions--
```js
function lookAndSay(str) {
return str.replace(/(.)\1*/g, function(seq, p1) {
return seq.length.toString() + p1;
});
}
```