Algoritmo para detectar palíndromos en JavaScript
Clase 17 de 19 • Curso de Pensamiento Lógico
Contenido del curso
Clase 17 de 19 • Curso de Pensamiento Lógico
Contenido del curso
Luis Quiroz Prada
Gizela Delgado Soto
ALEJANDRA ZARRAGA GUERRERO
Valentina Millaray Ponce Arce
MARIA TERESA PANIAGUA RIVERA
Ivan Andres Suarez Alfonso
Daniel Alejandro Yara Losada
Santiago Fernando
EDWARD STEVEN TORRES MARTINEZ
Santiago Fernando
Jeronimo Cepeda Celis
Gabriel Obregón
Alejandro Vanegas
Gustavo Pú
Gustavo Pú
Para invertir textoLimpio y generar textoInvertido en JavaScript, puedes usar una combinación de métodos de cadena. Aquí tienes una forma efectiva:
const textoInvertido = textoLimpio.split('').reverse().join('');
Explicación:
split('') convierte el texto en un array de caracteres.reverse() invierte el orden del array.join('') une los caracteres nuevamente en un string.Este método es simple y eficiente para invertir texto en JavaScript.
Mi solución:
const text = prompt('Ingrese una palabra o frase: '); const textNormalized = text.trim().toLowerCase().split(' ').join(''); const newTextReversed = textNormalized.split('').reverse().join(''); const isTextPalindrome = textNormalized === newTextReversed; const result = isTextPalindrome ? 'Palindrome :)' : 'Not palindrome :(' console.log('Normalized Text:', textNormalized); console.log('Reverse Text:', newTextReversed); console.log(result);
Nota: reemplace el paso de eliminar los espacios con .replaceAll y lo hice directo con .split(' ').join('') donde se sacan las palabras separadas por espacios y se vuelven a unir juntas directamente.
Luego me gusta usar el operador ternario, cuando tengo if/else simples como en este caso 😋
// operador ternario ? condicion ? caso verdadero : caso falso
Para quienes vamos empezando: en las últimas clases a veces podemos confundirnos un poquito con el flujo de las instrucciones, pero se debe a la edición del video que a veces corta pedacitos (importantes para quienes vamos empezando, empezando, empezando)
Mi código quedo así:
//Comprobador de Palìndromos //Paso 1: Solicitar la frase o palabra al usuario const input= prompt('INGRESA TU PALABRA O FRASE:'); //Paso 2: Limpiar el texto ingresado const textolimpio = input.replaceAll(' ', '').toLowerCase(); //Paso 3: Invertir el texto limpio const textoInvertido= textolimpio.split('').reverse().join(''); //Paso 4: Comprobar si el texto limpio e invertido son iguales if(textolimpio==textoInvertido){ console.log('ES UN PALÌNDROMO') alert('ES UN PALÌNDROMO') }else{ console.log('NO ES UN PALÌNDROMO') alert('NO ES UN PALÌNDROMO') }
Si omites este paso, tu algoritmo será extremadamente estricto y fallará en casos válidos, un problema conocido como sensibilidad a mayúsculas y minúsculas (case sensitivity). Para una computadora, la letra "A" mayúscula y la "a" minúscula son caracteres completamente distintos, con valores numéricos diferentes en el código interno. Si intentas comparar "Reconocer" con "reconoceR", JavaScript te dirá que no son iguales, arruinando la detección del palíndromo. Usar toLowerCase() actúa como un gran ecualizador. Es como pedirle a un grupo de personas que canten en el mismo tono antes de evaluar su afinación; estandarizas los datos de entrada para que la comparación lógica sea justa, precisa y a prueba de errores humanos de tipeo.
Gracias
En mi caso decidí probar creando otro algoritmo, lo que más me costo es entender al comienzo las nuevas dinámicas del lenguaje. Pero una vez comprendidas la creación se vuelve más fácil y se entiende lo que se está haciendo.
// ============================ // CALCULADORA DE EDADES // ============================ const input = prompt("Bienvenido estimado usuario a continuación ingrese su año de nacimiento"); const añoactual = new Date().getFullYear(); console.log('El año actual es ' + añoactual); const nacimiento = Number(input) const edad= añoactual - nacimiento; console.log ("tu edad es " + edad ) if ( edad < 18 ) {console.log ("Eres menor de edad");} else if (edad >= 18 && edad < 60) { console.log('Eres un adulto') } else {console.log('Eres un adulto mayor')}
Buen día, este es mi propuesta usando JavaScript y un entorno de nodejs:
// ============================ // IDENTIFICADOR DE PALINDROMOS 🧠 // ============================ const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); function preguntar(pregunta) { return new Promise((resolve) => { rl.question(pregunta, (respuesta) => { resolve(respuesta); }); }); } async function verificarPalindromo() { // Paso 1: Solicitar la frase o la palabra al usuario usando 'await' const input = await preguntar("Ingrese una palabra o frase: "); // Paso 2: Limpiar el texto ingresado (robusta contra espacios, mayúsculas y puntuación) const texto_limpio = input .toLowerCase() // El RegEx elimina cualquier cosa que no sea una letra de la 'a' a la 'z' .replaceAll(/[^a-z]/g, ""); // Paso 3: Invertir el texto limpio const texto_invertido = texto_limpio.split("").reverse().join(""); // Paso 4: comprobar si el texto limpio e invertido son iguales if (texto_limpio === texto_invertido) { console.log(`\n✅ ¡"${input}" es un PALÍNDROMO!`); } else { console.log(`\n❌ Lo siento, "${input}" NO es un palíndromo.`); // mostrar la comparación console.log(` Limpio: ${texto_limpio}`); console.log(`Invertido: ${texto_invertido}`); } rl.close(); } verificarPalindromo();
Yo hice una versión pequeña para palabras en python
Perfecto Santiago, pero haría falta eliminar los espacios.
En Python se puede hacer de la siguiente manera:
texto_sin_espacios = texto.replace(" ","")
Muchas gracias por el dato, no estaba seguro de como hacerlo para frases y la solución que vi estaba muy rebuscada
Super Resumen
¿Sabías que un palíndromo es una frase o palabra que puedes leer igualmente de izquierda a derecha y viceversa? Palabras como “reconocer” o la famosa frase “Anita lava la tina” son ejemplos claros. Aprender cómo desarrollar un algoritmo para identificarlos te ayudará a mejorar tu lógica de programación con JavaScript.
¿Qué es un palíndromo?
Un palíndromo es cualquier palabra o frase cuya secuencia de caracteres permanece igual cuando se lee al derecho o al revés. Algunos ejemplos conocidos son:
¿Cómo detectamos un palíndromo con un algoritmo?
Crear un algoritmo que detecte palíndromos implica:
Si ambas cadenas coinciden, estamos ante un palíndromo; en caso contrario, no lo es.
¿Cómo programar esta función en JavaScript paso a paso?
Para facilitarte esta tarea, sigue estos sencillos pasos en la plataforma playcode.io/new:
// Solicitar al usuario texto
const input = prompt("Ingresa la frase o palabra:");
// Limpieza del texto: quitar espacios y transformar en minúsculas
const textoLimpio = input.replaceAll(' ', '').toLowerCase();
// Invertir texto
const textoInvertido = textoLimpio.split('').reverse().join('');
// Comparar texto original limpio e invertido
if (textoLimpio == textoInvertido) {
console.log("Es un palíndromo");
} else {
console.log("No es un palíndromo");
}
Herramientas prácticas para programar online
Si estás empezando en programación o buscas ejecutar rápidamente códigos de prueba, la herramienta playcode.io es ideal. Te brinda un editor en línea gratuito que permite codificar en JavaScript y visualizar los resultados inmediatamente en el navegador.
¡Te invitamos a practicar implementando este algoritmo y compartiendo tus resultados o dudas en los comentarios!
🧠 PALÍNDROMOS EN JAVASCRIPT
📌 Definición
Un palíndromo es una palabra o frase que se lee igual de izquierda a derecha y de derecha a izquierda.
📝 Ejemplos
🔍 Cómo detectarlo (lógica del algoritmo)
💻 Ejemplo en JavaScript
const input = prompt("Ingresa la frase o palabra:");
const textoLimpio = input.replaceAll(' ', '').toLowerCase();
const textoInvertido = textoLimpio.split('').reverse().join('');
if (textoLimpio === textoInvertido) {
console.log("Es un palíndromo");
} else {
console.log("No es un palíndromo");
}
const input = prompt('Ingrese una frase o palabra:'); const textoLimpio = input.replaceAll(" ", "").toLowerCase(); const textoInvertido = textoLimpio.split("").reverse().join(""); if (textoLimpio == textoInvertido){ console.log(input + " es un palindromo"); }else{ console.log(input + " no es un palindromo"); } ```const input = prompt('Ingrese una frase o palabra:'); const textoLimpio = input.replaceAll(" ", "").toLowerCase(); const textoInvertido = textoLimpio.split("").reverse().join(""); if (textoLimpio == textoInvertido){ console.log(input + " es un palindromo");}else{ console.log(input + " no es un palindromo");}
<?php function esPalindromo($texto) { // Eliminar espacios, mayúsculas y caracteres no alfanuméricos $texto = strtolower(preg_replace('/[^a-z0-9]/i', '', $texto)); // Comparar el texto con su versión invertida return $texto === strrev($texto); } // Ejemplo de uso: $frase = "Anita lava la tina"; if (esPalindromo($frase)) { echo "'$frase' es un palíndromo."; } else { echo "'$frase' NO es un palíndromo."; } ?>
✅ Ejemplo de función palíndromo básica en PHP
<?php
function esPalindromo($texto) {
// Eliminar espacios, mayúsculas y caracteres no alfanuméricos
$texto = strtolower(preg_replace('/[^a-z0-9]/i', '', $texto));
// Comparar el texto con su versión invertida
return $texto === strrev($texto);
}
// Ejemplo de uso:
$frase = "Anita lava la tina";
if (esPalindromo($frase)) {
echo "'$frase' es un palíndromo.";
} else {
echo "'$frase' NO es un palíndromo.";
}
?>