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:
porque esto símbolos ~~?
ResponderEliminar