Палиндром


#63

по сложному пути пошли. вам не нужно искать разрядность числа.
вам нужна просто 1 временная переменная и нестрогое сравнение, чтобы сравнить 2 числа).

var poly = 50205;
var ylop = ""; // изменим тут, ниже поймете зачем
var isPalindrome = false;
var temp = poly;
for (var i = 0; temp > 0; i++) { // i тут тупо счетчик, условие выхода, что число больше не сосчитать по разрядам (т.е. по итерациям цикла)
  ylop += (temp % 10); // число + любая строка = строка
  temp = parseInt(temp/10, 10); // parseInt тащем-та работает не просто как преобразователь к числу. если это число дробное, оно его еще и обрезает до целого вниз. Math.floor (округление) вы изучите в следующей главе.
  console.log(`${i} итерация: temp = ${temp}, ylop = ${ylop} (${typeof(ylop)})`); // вы шаблоны не пройдете в курсах от академии, добавил, чтобы вам наглядно было что происходит на каждой итерации цикла, а заодно видели тип данных, не обязательная строка в общем-то
} 
if (poly == ylop) { isPalindrome = true; } // почему не строгое? ну влом приводить к числу, нам же не важен тип данных =) 

Помните, что прибавляя даже пустую строку вы меняете тип данных на строковый. а это как раз и надо, чтобы дописывать в конец строки остаток от деления на 10.
И заметьте, нет ничего такого, что вы не изучали.

вообще без доп. переменных
var poly = 50205;
var ylop = "";
var isPalindrome = false;

for (var i = poly; i > 0; i = parseInt(i/10, 10)) { 
  ylop += (i % 10); 
  console.log(`i = ${i}, ylop = ${ylop} (${typeof(ylop)})`);
} 
if (poly == ylop) { isPalindrome = true; }

#64

var poly = 121;
var ylop = 0;
var isPalindrome = false;
var number = poly;

while (number > 0) {
ylop = ylop * 10 + (number % 10);
number = (number - (number % 10)) / 10;
}

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


#65

нечего сказать, круто)
Благодарю!
Мои решения пока прямолинейные, потому как начинающий, пока осваиваю основы, твой способ намного упрощённый в плане кода (нет лишних переменных, а сама суть поместилась в 2-х строчках). Я запомнил свои ошибки.


#66

Объясните, пожалуйста, почему не происходит математического сложения чисел при действии ylop+= i % 10;, почему они записываются рядом, а не складываются?
Спасибо.


#67

непонятный код целиком приложите


#68

Вопрос вот по этому решению. Спасибо.


#69

давайте чутка модифицируем код, чтобы поиграться? :stuck_out_tongue_winking_eye:

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

for (var i = poly; i > 0; i /= 10) {
  schetchik++;
  ylop += i % 10;
  console.log(`начало итерации №${schetchik} ylop=${ylop}`);
  if (i >= 10) {
    ylop *= 10;
  }
  i -= i % 10;
  console.log(`конец итерации №${schetchik} ylop=${ylop}`);
}

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

вставьте код в консоль и поймете, что все хорошо складывается


#70

Благодарю, наглядно, понятно, спасибо!:smile_cat:


#71

В конце пошли решения, встречаются ещё более менее понятные. А в начале почитаешь, команды в решениях с Math.floor с Math.pow, мы ещё это не проходили, для начинающего очень сложно понять, приходилось искать сайт шпаргалку, чтобы вычитывать что это за команды. Думаю что нужно бы в курсах в теории вначале с этими командами ознакомить всё таки и дать расшифровку, как в начале в знакомстве в html знакомили с каждым тегом.
Как то в первых главах было всё по полочкам, разъясняли каждую деталь, а в Javosript не так подробно объясняется.