Платформа: CodeWars
Название задачи: Numerical Palindrome #3.5 (Числовой палиндром #3.5)
Ссылка на задачу: https://www.codewars.com/kata/58e2708f9bd67fee17000080
Сложность: 6 kyu
Уже решили (На момент написания статьи): 951 из 4 767
Тэги: Arrays, Fundamentals
Оригинальное описание задачи:
A palindrome is a word, phrase, number, or other sequence of characters which reads the same backward as forward. Examples of numerical palindromes are: `2332, 110011, 54322345`
For a given number ``num``, write a function which returns an array of all the numerical palindromes contained within each number. The array should be sorted in ascending order and any duplicates should be removed.
In this kata, single digit numbers and numbers which start or end with zeros (such as `010` and `00`) are NOT considered valid numerical palindromes.
If `num` contains no valid palindromes, return "No palindromes found". Otherwise, return "Not valid" if the input is not an integer or is less than `0`.
Examples
1221 --> [22, 1221]
34322122 --> [22, 212, 343, 22122]
1001331 --> [33, 1001, 1331]
1294 --> "No palindromes found"
"1221" --> "Not valid"
Пояснение задачи:
Задача состоит в поиске всех числовых палиндромов внутри заданного числа.
Описание:
Необходимо реализовать функцию, принимающую целое число (`num`), и возвращающую отсортированный массив уникальных числовых палиндромов, содержащихся в числе.
Число считается палиндромом, если оно читается одинаково слева направо и справа налево, при этом исключаются следующие случаи:
- Однозначные числа (например, `1`, `2`, ..., `9`)
- Числа, начинающиеся или заканчивающиеся нулями (например, `010`, `00`, `100`)
Если в числе нет палиндромов, функция должна вернуть строку "No palindromes found". Если входное значение не является целым числом или меньше нуля, функция возвращает "Not valid".
Примеры:
- Вход: `1221` Выход: `[22, 1221]` Объяснение: числа `22` и `1221` являются палиндромами.
- Вход: `34322122` Выход: `[22, 212, 343, 22122]` Объяснение: найденные палиндромы имеют длину от 2 до 4 цифр.
- Вход: `1001331` Выход: `[33, 1001, 1331]` Объяснение: найдены три палиндрома разной длины.
- Вход: `1294` Выход: `"No palindromes found"` Объяснение: в числе нет палиндромов.
- Вход: "1221" Выход: "Not valid" Объяснение: строковый ввод недопустим, ожидается целое число.
Требования:
- Проверка корректности ввода: если число отрицательное или не является целым, выводится "Not valid".
- Палиндромы должны быть уникальными и отсортированы по возрастанию.
- Однозначные числа и числа с ведущими или завершающими нулями не считаются палиндромами.
Функция должна эффективно находить все подходящие палиндромы и возвращать результат в требуемом формате.