@Zvenem

Как работает код(поиск палидромов)?

Нашёл интересное решение классической задачи, но не смог разобраться в структуре. Как и по каким критериям происходит проверка?
const _error = () => { throw new TypeError(); } ;
const _isPalindrome = s => s.length ? s[0]===s.slice(-1) ? _isPalindrome(s.slice(1,-1)) : false : true ;
const isPalindrome = s => s.slice ? _isPalindrome(s) : _error() ;
  • Вопрос задан
  • 67 просмотров
Решения вопроса 2
Stalker_RED
@Stalker_RED
Проверяется наличие метода slice, проверяется равенство первого и последнего значения, если проверка прошла, берется подстрока без первого и последнего, и проверяется снова, и так пока не закончится строка (или массив).
Ответ написан
Комментировать
hzzzzl
@hzzzzl
const isPalindrome = s => s.slice ? _isPalindrome(s) : _error() ;
только строка имеет метод stroka.slice()
если не строка, то ошибка

const _isPalindrome = s => 
 s.length 
 // длина строки больше 0?
 ? s[0] === s.slice(-1) 
     // первая буква равна последней букве?
     ? _isPalindrome(s.slice(1,-1)) 
     // если да то проверяем то же самое, отрезав от строки 1 и посл букву
     // _isPalindrome("алиндро")
     // если буквы не равны, то false и это не палиндром
     : false 
// если код дойдет досюда и не вернет false, то это палиндром
 : true ;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы