v1
3/11/2024 by hkotsubo -00
Setup HTML - click to add setup HTML
disable setup JavaScript
Setup JavaScript
function math(n) {
    if (n < 0)
        return false;
    if (n < 10) // número com 1 dígito sempre é palíndromo
        return true;
    if (n % 10 == 0) // múltiplos de 10 nunca são palíndromos
        return false;
    if (n < 100) // número com 2 dígitos, compara o primeiro e segundo dígitos
        return n % 10 === Math.floor(n / 10);

    // para os demais, inverter o número até a metade
    var inverso = 0;
    while (inverso < n) {
        inverso = (10 * inverso) + (n % 10);
        n = Math.floor(n / 10);
    }
    return n == inverso || n == Math.floor(inverso / 10);
}

function math2(num) {
    // segundo o enunciado, número negativo não é palíndromo
    if (num < 0)
        return false;

    var n = num;
    var inverso = 0;
    while (n > 0) {
        inverso = (10 * inverso) + (n % 10);
        n = Math.floor(n / 10);
    }
    return num == inverso;
}

function str(n) {
    if (n < 0)
        return false;
    var s = n.toString();
    var left = 0, right = s.length - 1;
    while (left < right) {
        if (s[left] != s[right])
            return false;
        left++;
        right--;
    }
    return true;
}

var n = 100000;
delete caserun single casemove downdrag and drop case


ready



for (var i = -n; i < n; i++)
    math(i);
delete caserun single casemove upmove downdrag and drop case


ready



for (var i = -n; i < n; i++)
    math2(i);
delete caserun single casemove updrag and drop case


ready



for (var i = -n; i < n; i++)
    str(i);
Test Case - click to add another test case
Teardown JS - click to add teardown JavaScript
Output (DOM) - click to monitor output (DOM) while test is running
RUN