Там два варианта. Первый с переводом в строку и с заведением сторонних переменных (что на мой взгляд не честно), и второй вариант - чистый (с стандартными переменными). Если администрация решит удалить мой ответ, я не против. Отсутствие ответа и готового решения заставляет думать своей головой.
У меня было такое же решение. Только вот почему нужно создавать дополнительную переменную number? Я не понимаю почему происходит ошибка, если использовать только poly вместо number к которой присвоили poly. Подскажите кто-нибудь пожалуйста.
Аааа, мы ведь в конце сравниваем. А в цикле значение poly изменяется, а нам нужно оставить его исходным для сравнения в конце. Что-то я сам себя запутал
var poly = 2662;
var ylop = 0;
var isPalindrome = false;
var num;
var quantity = 0;
var subPoly = poly;
var i = 1;
while (poly / i >= 1) {
quantity++;
i *= 10;
}
for (var j = 1; j <= quantity; j++) {
ylop += (subPoly % 10) * (10 ** (quantity - (j)));
if (j !== quantity) {
subPoly = Math.floor(subPoly / 10);
} else {
subPoly = poly;
}
}
if (ylop === poly) {
isPalindrome = true;
} else {
isPalindrome = false;
}
Сначала я нашел разрядность, потом создал цикл, в котором прохожусь по всем цифрам якобы палиндрома
“Палиндрому наоборот” прибавляю значение последней цифры палиндрома, то есть сначала последнюю цифру умножаю на 10 в степени максимальной позиции числа, то есть делаю ее первой в обратном палиндроме и так далее
P.S. Для тех, кто как и я зашел посмотреть объяснение для того, чтоб потом решить самому - так не получится: так как объяснил я, на 100% пойму только я, и так же с любым другим автором, я считаю. Поэтому вам просто нужно посидеть, прокрутить задачу, но не стану говорить, что смотреть чужие решения - плохо. Часть решения я подсмотрел у других людей)
2 дня ломал голову над этой задачей. В итоге родилась такая программа, которая любое число “Зеркалит”.
В итоге пришлось только еще одну переменную добавить. Ну и Math.flor(), о котором речи не шло в курсе помог.
Может кому поможет. Ну и от оценки/критики не откажусь;)
var poly = 1221;
var startValue = poly;
var ylop = 0;
var isPalindrome = false;
На первой итерации в ylop записывается только остаток от деления poly на 10. 0 на десять можно умножать, просто получится 0. На следующей итерации уже остаток от деления умножается на десять и к нему прибавляется очередной остаток от деления от укороченного на одну цифру ylop. Вот)
Вам или кто-то помогает с решением задач, или вы реально все сами знаете. Но до меня большая часть самого ТЗ очень долго доходит. Когда я вижу решение задачи я сразу же все понимаю что к чему, но сам решить не могу.