Палиндром / Не совпадение типов

Прохожу последнее испытание практики Палиндом. Вот мой код

var poly = 1221;
var ylop = 0;
var isPalindrome = false;

var counter = 1;
var step = 0;

while( poly%10 > 0){

if(step>0){
counter= Math.pow(10,step);
}
ylop+=poly%10*counter;
poly = Math.floor(poly / 10);

step++;

}

console.log("ylop = " + typeof ylop);
console.log("ylop = " + ylop);

if(poly == ylop){
isPalindrome = true;
}

console.log("isPalindrome = " + isPalindrome)

Переменную ylop я создаю верно, а на сравнениях типов у меня получается облом. Подскажите,пожалуйста,что не так в коде?

Добрый день. Ваша проблема в том, что вы изменяете переменную poly, а потом сравниваете ylop с изменённым значением, который равен 0. Так как у меня в с математикой плохо, я исправил это так:

var poly = 1591;
var ylop = "";
var test = poly;

var isPalindrome = false;

var counter = 1;
var step = 0;

while( poly != 0){

if(step>=0){
  counter= Math.pow(10,step);
}
ylop+=poly%10;
poly = Math.floor(poly / 10);

step++;

}

console.log("ylop = " + ylop);
console.log("test = " + test);

if(test == +ylop){
isPalindrome = true;
}
1 лайк

И да, я уже не помню точно, что изучалось в том курсе, но, как мне кажется, это решение будет понятнее и проще:

var poly = 1221;
var isPalindrome = false;
var ylop = String(poly);

if(ylop[0] == ylop[3] && ylop[1] == ylop[2]) {
  isPalindrome = true;
}
1 лайк

Спасибо за объяснение ошибки. К сожалению, предложенный вариант тоже не проходит тест, хотя переменная poly уже и не 0. *Ваш вариант будет рабочим только если число из 4 цифр насколько я понимаю, и если в середине нету проблем. например число 125621 уже тест не пройдет.

У меня всё работает.

1 лайк

У меня всё работает:

Ну а насчёт рабочего кода. Тут вы правы. Однако:

var poly = 1591;
var ylop = "";
var test = String(poly);

var isPalindrome = false;

for (var i = test.length - 1; i >= 0; i--) {
  ylop += test[i];
}
if (ylop == test) isPalindrome = true;

Да, действительно, перепроверил. Заработало.Видать не внимательно нарибал код

var poly = 1221;
var ylop = 0;
var isPalindrome = false;
var ylopString = ‘’;
var index = poly.toString().length - 1;
for (index; index >= 0; index–) {
ylopString = ylopString + poly.toString()[index];
}
if (poly == ylopString) {
isPalindrome = true;
} else {
isPalindrome = false;
}