Палиндром

Добрый день. Подскажите, почему не проходит такой вариант? Результат выдает верный в playcode, а Кекс выдает Error : Timeout error.
let poly = 1221;
let ylop = 0;
let isPalindrome = false;

for (let i = poly; i > 0; i = Math.floor(((poly % 10) * 10) + (poly / 100) % 10)) {

ylop = Math.floor(i * 100) + (poly % 100);
if (poly === ylop) {isPalindrome = true}

}

Понял, спасибо !

Вот мой вариант решения. С использованием только пройденного материала, ну кроме Math.floor(). :wink:

var poly = 5005;
var ylop = 0;
var isPalindrome = false;
var remainder = 0;
var division = 0;

remainder = poly % 10;
division = Math.floor(poly / 10)
ylop = (remainder * 10) + (division % 10);
  
while (division > 10) {
    division = Math.floor(division / 10);
    ylop = (ylop * 10) + (division % 10);
};


if (poly === ylop) {
  isPalindrome = true;
  console.log(ylop + ' Это полиндром');
} else {
  console.log(ylop + ' Это не полиндром');
}

Фига Вы сложную какую-то математику в подсказке предложили. Я так её до конца и не понял. Сделал так:
var poly = 1221;
var ylop = 0;
var isPalindrome = false;
ylop = ‘’;
var newPoly = poly;
while (newPoly > 0.1) {
var number = newPoly % 10;
newPoly = Math.floor(newPoly / 10);
ylop += number;
}
if (poly == ylop) {
isPalindrome = true;
}

Хотя можно в конце ylop опять в число превратить и использовать строгое сравнение:
if (poly === +ylop) {
isPalindrome = true;
}

Вот мой варик решения. Хочу услышать критику, спасибо!)
let poly = 50;
let ylop = 0;
let isPalindrome = true;
let counter = poly;

while (counter >= 1) {
ylop = ylop * 10 + counter % 10;
counter = (counter - counter % 10) / 10;
}

if (poly === ylop) {
isPalindrome = true;
} else {
isPalindrome = false;
}`

1 лайк

Почему вот ЭТО в подсказке ни у кого не вызывает вопросов?

// Уменьшаем изначальное число
505 / 10 = 50;
// 50 — результат деления 505 на 10

2 лайка

Доброго времени суток!
В ближайшее время будет добавлено уточнение о том, что деление происходит с округлением вниз.

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

poly = String(poly);
ylop = String(ylop);

ylop = poly.split("").reverse().join("");

console.log(ylop);

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

var poly = 123456;
var ylop = String(poly);
var isPalindrome = true;

if (ylop.length % 2 !== 0) {
console.log(poly + ’ не может быть палиндромом! Введите число с четным колличеством цифр!’);
}
else {
for( i = 0, j = ylop.length - 1; i < ylop.length/2; i++, j–) {
if (ylop[i] === ylop[j]) {
isPalindrome= true;
}
else {
isPalindrome = false;
}
}
if (isPalindrome) {
console.log(poly + ’ палиндром!’);
}
else {
console.log(poly + ’ не палиндром!’)
}
}

Гениально!)

let poly = 1221;
let ylop = 0;
let isPalindrome = false;
let multipler1 = 1000;
let multipler2 = 10;
let min=0;

for (let i = 0; i < String(poly).length; i++) {
ylop += ((poly-min)%multipler2)*multipler1;
min =poly%multipler2;
multipler1 /= 100;
multipler2 *= 10;
}

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

Из непройденного только длинна строки, без преобразований типов, массивов и работ со строками.

Мне почему вот такой вариант сразу в голову пришел:

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

ylop = +poly.toString().split(’’).reverse().join(’’);
if (ylop === poly) {
isPalindrome = true
};

Так у вас в коде в первой проверке сравнение идёт с нулём, а комментируя код построчно вы сравниваете число в первой проверке с 10ю. Наверное надо в коде сравнивать с десятой всё таки, когда речь идёт о разрядности

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

ylop = ((poly % 10)1000) + (Math.floor((poly % 100) 0.1) *100) + (Math.floor((poly % 1000)*0.01)*10) + (Math.floor((poly % 10000)*0.001));
console.log(ylop);

if(poly == ylop){
isPalindrome = true;
}
Вот что намухоморила. Почему-то работает))

Не понимаю только один момент: напримет, проверял числом 1234, в предпоследней итерации counter = (12 - 2) / 10. Дальше начинается последняя итерация и 1 % 10 возвращает 1. В проверке аналогично имеем 7 % 10 возвращает 7.
Вот где написано, что если число меньше 10, то остаток от деления этого числа на 10 и будет это число?) Всю голову сломал)