Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   палиндром О НЕТ, ОПЯТЬ кто то это спрашивает (https://javascript.ru/forum/misc/79920-palindrom-o-net-opyat-kto-ehto-sprashivaet.html)

igorridinger 07.04.2020 21:59

палиндром О НЕТ, ОПЯТЬ кто то это спрашивает
 
Здравствуйте! надо выполнять проверку является число палиндромом или нет, его надо решить именно через циклы. я делал в том числе с учётом подсказок которые мне дали в том месте. я чувствую будто уже близко к решению, но как будто упускаю что то важное. вот сам код

var poly = 1221;
var ylop = 0;
var isPalindrome = false;
var x=0;
var y=0;
var z=0;
var k=0;

for (var i=0; i>=poly; i++){
x=poly%10;
y=poly/10;
z=(10*x)+(y%10);
k=z/10;
ylop=(z*10)+(k%10);
}if(ylop=poly){
isPalindrome=true
}else{
isPalindrome=false
}

есть вариант с округлением, который даёт такой же результат (никакой) . считаю нужным что только изучаю javascript и с функцией как я понял которой как правило всё это решается я не знаком

Vlasenko Fedor 08.04.2020 02:09

<script>
function reverseNumber(value) {
      var tmp = 0, flag = 0 > value;
      flag && (value *= -1);
      while (value > 0) {
      tmp *= 10;
      tmp += value % 10;
        value = parseInt(value / 10);
      }
      return flag ? -tmp : tmp;
    }
alert (1221 === reverseNumber(1221));
</script>

Вариант :)

igorridinger 10.04.2020 17:36

не пойдёт, надо именно через циклы

да и я ни слова не понял)

Vlasenko Fedor 10.04.2020 18:19

Цитата:

Сообщение от igorridinger
надо именно через циклы

while это и есть цикл
Цитата:

Сообщение от igorridinger
да и я ни слова не понял)

вперед учебник учить

Malleys 21.04.2020 18:59

Poznakomlus, а кто будет проверять на Number.MAX_SAFE_INTEGER? Зачем отрицательные значения обрабатываются отдельно?

function reverseNumber(value) {
	let result = 0n;

	while(value !== 0n) {
		result = 10n * result + value % 10n;
		value /= 10n;
	}

	return result;
}

alert(1221n === reverseNumber(1221n));


При помощи рекурсии...
function reverseNumber(value, result = 0n) {
	return value === 0n ? result : reverseNumber(value / 10n, 10n * result + value % 10n);
}
alert(1221n === reverseNumber(1221n));

Vlasenko Fedor 22.04.2020 02:04

Malleys,
Вижу тебе тоже бывает скучно. Немогу плюсануть :)

azolkin 22.04.2020 15:15

let num = 12321;
  let str = num.toString();
  let result = true;
  for (let i = 0; i < Math.trunc(str.length / 2); i++) {
    if (str[i] != str[str.length - i - 1]) result = false;
  }
  alert(result);

caetus 29.04.2020 10:17

Azolkin, увидел твое решение уже после публикации))

function fn (num) {
    let str = String(num);
    for(let i = 0; i < Math.trunc(str.length / 2); i++){
           if ( str[i] != str[str.length-i-1]) return false
   }
   return true
}

alert(fn(1221))


Часовой пояс GMT +3, время: 22:14.