(1221 - 1221 % 10) / 10 = 109.89
- 1221%10 = 1; (остаток от деления 1221 на 10)
- 1221 - 1 = 1220;
- 1220/10 = 122;
Каким образом у вас получилось 109.89 я не представляю.
Решение автора просто шикарное.
(1221 - 1221 % 10) / 10 = 109.89
Каким образом у вас получилось 109.89 я не представляю.
Решение автора просто шикарное.
У меня было такое же решение. Только вот почему нужно создавать дополнительную переменную 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% пойму только я, и так же с любым другим автором, я считаю. Поэтому вам просто нужно посидеть, прокрутить задачу, но не стану говорить, что смотреть чужие решения - плохо. Часть решения я подсмотрел у других людей)
Возможно, не такое корректное и правильное решение, но за то короткое и работающее))
var poly = 1221;
var ylop = 0;
var isPalindrome = false;
if (ylop = poly.toString().split(’’).reverse().join(’’) == poly) {
isPalindrome = true
}
2 дня ломал голову над этой задачей. В итоге родилась такая программа, которая любое число “Зеркалит”.
В итоге пришлось только еще одну переменную добавить. Ну и Math.flor(), о котором речи не шло в курсе помог.
Может кому поможет. Ну и от оценки/критики не откажусь;)
var poly = 1221;
var startValue = poly;
var ylop = 0;
var isPalindrome = false;
while (poly >= 1) {
ylop = ylop * 10 + poly % 10;
poly = Math.floor(poly / 10);
}
if (ylop === startValue) {
isPalindrome = true;
}
var poly = 7997;
var ylop = 0;
var isPalindrome = false;
var temporaryNumber = ‘’;
var number;
number = String(poly % 10)
numberPoly = poly
while (numberPoly > 0) {
if ( numberPoly > 0) {
numberPoly = Math.floor(numberPoly / 10)
console.log('numberPoly ’ + numberPoly)
if (numberPoly == 0) {
numberPoly = ‘’;
} else {
ylop = String(numberPoly % 10)
console.log('ylop ’ + ylop)
temporaryNumber = temporaryNumber + ylop
}
}
}
number = number + temporaryNumber
ylop = Number(number)
console.log('ylop ’ + ylop)
console.log('poly ’ + poly)
if (ylop === poly) {
isPalindrome = true
} else {
isPalindrome = false
}
Я вообще не понял как ylop , которая имеет значение 0 , умножается на 10 да и еще и результат какой то получаем
На первой итерации в ylop записывается только остаток от деления poly на 10. 0 на десять можно умножать, просто получится 0. На следующей итерации уже остаток от деления умножается на десять и к нему прибавляется очередной остаток от деления от укороченного на одну цифру ylop. Вот)
Вам или кто-то помогает с решением задач, или вы реально все сами знаете. Но до меня большая часть самого ТЗ очень долго доходит. Когда я вижу решение задачи я сразу же все понимаю что к чему, но сам решить не могу.
дайте пожалуйста обратную связь по коду:
let poly = 1221; //палиндром
let ylop = 0; //анти-палиндром
let isPalindrome = false;
let z = poly; //целая часть от деления, ее нужно округлять
let y = poly; //остаток от деления, округлять не нужно
while (z>=1) {
y = z % 10;
z = Math.floor(z / 10);
ylop = Math.round(ylop + String(y));
console.log('y = ' + y);
console.log('z = ' + z);
console.log('ylop = ' + ylop);
}
if (ylop === poly) {
isPalindrome = true;
} else {
isPalindrome = false;
}```
100%
let poly = 1221;
let ylop = 0;
let isPalindrome = false;
for (let r = poly; r > 0; r = (r - (r % 10)) / 10) {
ylop = ylop * 10 + (r % 10);
}
isPalindrome = poly === ylop;
Потратил несколько вечеров на то, чтобы самому придти к решению, иногда впадал в отчаяние и хотел залезть на форум… Но все таки не сдался и наконец решил.
let poly = 3223;
let ylop = 0;
let isPalindrome = false;
for (i = poly ; Math.floor(i) > 0; i /= 10) {
ylop = ylop * 10 + Math.floor(i) % 10
if (ylop === poly) {
isPalindrome = true
}
}
console.log(isPalindrome)
let poly = 1221;
const polyOld = poly;
let ylop = '';
let isPalindrome = false;
while (poly > 0) {
ylop += String(poly % 10);
poly = Math.floor(poly / 10);
}
if (ylop == polyOld) {
isPalindrome = true;
}
Я решил это таким образом хД
моё решение. Задание пройдено, но не знаю, насколько решение верное. Но сразу так я его почти себе представлял:
let poly = 1221;
let ylop = ‘’;
let currentPoly = poly
let isPalindrome = false;
for (i=10;currentPoly>0;) {
ylop += ‘’ + currentPoly % i;
currentPoly = Math.floor(currentPoly/i);
console.log(ylop)
}
if (poly == ylop) {
isPalindrome = true
console.log( poly + ’ - является палиндромом’)
}
let poly = 1221;
let isPalindrome = false;
function ylop(str) {
const s = String(str);
return s.split("").reverse().join("");
}
if (ylop(poly) == poly) {isPalindrome = true}
Вот мое решение без циклов и функций))
let poly = 1591
let ylop = 0;
let isPalindrome = false;
poly_ost = poly%10;
poly_del = (poly-poly_ost)/10;
poly_ost_2 = poly_del%10;
poly_del_2 = (poly_del - poly_ost_2)/10;
poly_ost_3 = poly_del_2%10;
poly_del_3 = (poly_del_2 - poly_ost_3)/10;
poly_ost_4 = poly_del_3%10;
ylop = ((poly_ost*10+poly_ost_2)*10+poly_ost_3)*10+poly_ost_4;
if(ylop == poly){
isPalindrome = true;
}
ylop = Number(String(poly).split('').reverse().join(''));
poly === ylop ? isPalindrome = true : isPalindrome = false;
let poly = 2222;
let ylop = 0;
let isPalindrome = false;
let polyString = String(poly);
let num;
for (let i = 0; i < polyString.length; i++) {
num = String(poly % 10)
console.log(num);
poly = Math.floor(poly / 10);
ylop += num;
ylop = Number(ylop);
if(ylop === poly) {
isPalindrome = true;
}
}
Всем привет! Долго тупил над подсказкой, решил посмотреть ответы тут, но видимо у меня с математикой совсем плохо, в принципе примеры разбирал и понимал но сам бы не догадался так решить как многие тут пишут. Вот мой кастыльный вариант, практически без математики:
var poly = 505;
var ylop = 0;
var isPalindrome = false;
var number = ‘’;
poly = String(poly);
for (var i = poly.length - 1; i >= 0; i-- ) {
number += poly[i];
}
if (number === poly) {
isPalindrome = true;
}
но пришлось воспользоваться массивом, если бы я проходил тренажёры по порядку то не смог бы этого сделать. Хочу переделать, что бы решение было как задумал автор.