9 oct 2015

Comprobamos si una palabra es palíndroma en JavaScript


Ayer en la hora de Implantación de Aplicaciones Web estuve terminando los ejercicios de programación y me topé con uno bastante curioso.

El problema pedía hacer un programa en javascript para comprobar si una cadena de texto es palíndroma o no. Nota: una palabra palíndroma es la que se lee exactamente igual de derecha a izquierda que de izquierda a derecha.

Después de darle unas vueltas al asunto, he encontrado la solución. Y me ha parecido bastante original, por tanto la he decidido compartir con vosotros ;)

A continuación pongo la solución y explico cada linea del código:

<script>

var cadena = prompt("Introduce una palabra o frase:"); /* pedimos que se introduzca una cadena de texto y la asignamos a la variable "cadena" */
cadena = cadena.toLowerCase(); /* pasamos la cadena introducido a minúsculas */

function palindromo(cadena) /*definimos la función que va a comprobar si la palabra es palíndroma*/
    {
        var divEntera = ~~((cadena.length)/2); /* definimos variable divEntera y le asignamos el valor de la división entera de la longitud de nuestra cadena entre 2. Por ejemplo, si la cadena es de 5 caracteres, divEntera valdría 2. De esta forma sabemos cuántos caracteres tenemos que comparar */
   
        var result = 0; /* definimos la variable resultado */
   
        for (i = 0; i<divEntera; i++) /* definimos un bucle finito, empezando con i = 0, para cuando la i sea menor que divEntera, sumando +1 al valor de i en cada ciclo */
            {
                if (cadena[i] == cadena[cadena.length-1-i]) /* comparamos el primer carácter de la cadena con el último, y así hasta que i se iguale al valor de divEntera */
                    {
                        result++; /* si se cumple la condición anterior, sumamos +1 a la variable result */
                    }
            }
         
        if (result == divEntera) /* si valor de result es igual al valor de divEntera, es decir, si la cadena introducida es palíndroma... */
            {
                return true; /* la función devuelve true */
            }
        else
            {
                return false; /* la función devuelve false */
            }
    }

/* si la función devuelve true, nos sale mensaje de que es palíndroma, y si no, que no lo es */

if (palindromo(cadena) == true)
    {
        alert("Es palíndroma");
    }
else
    {
        alert("NO es palíndroma");
    }
 
</script>

 Ahora sólo queda copiar el código a un editor de texto (aconsejo Notepad++) y guardarlo en formato HTML. Lo abrimos en nuestro navegador (voy a usar Mozilla Firefox) y probamos:




1 comentario: