---
id: 5ea2815a8640bcc6cb7dab3c
title: Числа Лішрел
challengeType: 1
forumTopicId: 385287
dashedName: lychrel-numbers
---

# --description--

<ol>
  <li>Візьміть ціле число <code>n₀</code>, більше за 0.</li>
  <li>Утворіть наступне число <code>n</code> серій, повернувши <code>n₀</code> і додавши його до <code>n₀</code></li>
  <li>Зупиніться, коли <code>n</code> стає паліндромним, тобто цифри <code>n</code> у зворотньому порядку == <code>n</code>.</li>
</ol>

Наведене вище повторюване відношення при застосуванні до більшості початкових чисел `n` = 1, 2, ... обривається на паліндромі досить швидко.

Наприклад, якщо `n₀` = 12, ми отримуємо:

```bash
12
12 + 21 = 33,  a palindrome!
```

І якщо `n₀` = 55, то отримаємо:

```bash
55
55 + 55 = 110
110 + 011 = 121,  a palindrome!
```

Зверніть увагу, що ця перевірка паліндрому відбувається *після* додавання.

Деякі початкові числа можуть повторюватися безкінечну кількість разів, рекурентне співвідношення для 196 нараховує мільйони повторів, що утворює числа в мільйонному степені, так і не утворивши паліндром. Числа, які не можуть стати паліндромами, називають** числа Лішрел**.

У цьому плані число Лішрел - це будь-яке початкове число, яке не утворює паліндром через 500 (і більше) ітерацій.

**Початкові та пов'язані числа Лішрел:**

Будь-яке ціле число у послідовності чисел Лішрел є також числом Лішрел.

Загалом, будь яка послідовність з одного числа Лішрел *повинна *зійтися з послідовністю з попереднього потенційного числа Лішрел; наприклад, послідовності чисел 196, а пізніше 689 починаються з:

```bash
    196
    196 + 691 = 887
    887 + 788 = 1675
    1675 + 5761 = 7436
    7436 + 6347 = 13783
    13783 + 38731 = 52514
    52514 + 41525 = 94039
    ...
    689
    689 + 986 = 1675
    1675 + 5761 = 7436
    ...
```

Отож ми бачимо, що послідовність, яка починається з 689, збігається й продовжується тими ж числами, що й для 196.

А отже в подальшому ми можемо розбити числа Лішрел на справжні **Початкові **потенційні числа Лішрел, а також **Відносні** числа, які не утворюють паліндром, проте містять цілі числа в послідовності, які розглядають як частину послідовності, що виникла від меншого числа Лішрел.

# --instructions--

Напишіть функцію, яка бере число як параметр. Поверніть значення true, якщо це число є числом Лішрел. В іншому випадку поверніть false. Пам'ятайте, що кількість ітерацій не повинна перевищувати 500.

# --hints--

`isLychrel` має бути функцією.

```js
assert(typeof isLychrel === 'function');
```

`isLychrel(12)` має повернути логічне значення.

```js
assert(typeof isLychrel(12) === 'boolean');
```

`isLychrel(12)` має повернути `false`.

```js
assert.equal(isLychrel(12), false);
```

`isLychrel(55)` має повернути `false`.

```js
assert.equal(isLychrel(55), false);
```

`isLychrel(196)` має повернути `true`.

```js
assert.equal(isLychrel(196), true);
```

`isLychrel(879)` має повернути `true`.

```js
assert.equal(isLychrel(879), true);
```

`isLychrel(44987)` має повернути `false`.

```js
assert.equal(isLychrel(44987), false);
```

`isLychrel(7059)` має повернути `true`.

```js
assert.equal(isLychrel(7059), true);
```

# --seed--

## --seed-contents--

```js
function isLychrel(n) {

}
```

# --solutions--

```js
function isLychrel(n) {
  function reverse(num) {
    return parseInt(
      num
        .toString()
        .split('')
        .reverse()
        .join('')
    );
  }

  var i;
  for (i = 0; i < 500; i++) {
    n = n + reverse(n);
    if (n == reverse(n)) break;
  }

  return i == 500;
}
```
