JavaScript – Saber si cadena es Pangrama

Anteriormente vimos cómo saber si una string es un pangrama en Python.

Ahora veremos cómo comprobar que una cadena es un pangrama en JavaScript, para ello usaremos un algoritmo simple en combinación con el método includes.

Recuerda que un pangrama es aquella oración que contiene todas las letras de un alfabeto de determinado idioma; en este caso lo haremos con el alfabeto español, aunque también se podrá modificar para otro alfabeto como el inglés.

El algoritmo

Hay que recorrer todo el alfabeto y comprobar que todas y cada una de las letras estén presentes dentro de la cadena a probar, para ello hay que ver si la cadena incluye la letra.

Antes de eso hay que convertir la cadena a minúscula, pues vamos a compararla con el alfabeto de letras minúsculas.

Nota: en los ejemplos de código voy a usar const con let y funciones flecha.

Pangrama en JavaScript

Hablar es de mal gusto; veamos el código. Lo dejo aquí y lo explico más abajo:

/**
 * Función que indica si una cadena es Pangrama en JavaScript
 * 
 * @author parzibyte
 */

const esPangrama = cadena => {
	const ALFABETO_MINUSCULAS = "abcdefghijklmnñopqrstuvwxy";
	// Convertir a minúsculas
	cadena = cadena.toLowerCase();

	let alfabetoComoArreglo = Array.from(ALFABETO_MINUSCULAS);

	// Recorrer alfabeto
	for (let indice = 0; indice < alfabetoComoArreglo.length; indice++) {
		let letraActual = alfabetoComoArreglo[indice];
		// En caso de que la cadena NO contenga la letra, regresamos false de una vez
		if (!cadena.includes(letraActual)) return false;
	}
	// Se termina el ciclo y no se rompió arriba, ¡así que la cadena es pangrama!
	return true;
};


// Probar método
const CADENAS_PARA_PROBAR = [
	"El cadáver de Wamba, rey godo de España, fue exhumado y trasladado en una caja de zinc que pesó un kilo",  //  No
	"Hola",  //  No
	"aeiou",  //  No
	"parzibyte",  //  No
	"abcdefghijklmnñopqrstuvwxyz",  //  Sí
	"El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja",  //  Sí,
	"abcdefghijklmnopqrstuvwxyz",  // No, porque no lleva ñ
	"Mi hijo degustó en el festival de bayas una extraña pizza de kiwi con queso",  // Sí
];

CADENAS_PARA_PROBAR.forEach(cadena => {
	console.log(`¿'${cadena}' es pangrama? ${esPangrama(cadena)}`);
});

Primero definimos el alfabeto en minúsculas y convertimos la cadena que vamos a probar igualmente a minúsculas.

Recorremos el alfabeto en un simple for y vamos probando que cada letra del alfabeto esté incluida dentro de la cadena.

Si se acaba el ciclo sin romperse (o sea, que sí están todas las letras del alfabeto en la cadena) entonces se dice que sí es un pangrama.

Método 2: menos código

Los arreglos tienen un método llamado every, que regresan un booleano si se cumple un predicado para todos los casos; gracias a ello podemos crear un código más corto (no lo recomiendo, porque es menos legible).

Queda así:

/**
 * Función que indica si una cadena es Pangrama en JavaScript
 * (método corto)
 * @author parzibyte
 */

const esPangrama = cadena => {
	const ALFABETO_MINUSCULAS = "abcdefghijklmnñopqrstuvwxy";
	// Convertir a minúsculas
	cadena = cadena.toLowerCase();
	return Array.from(ALFABETO_MINUSCULAS).every(letra => cadena.includes(letra));
};


// Probar método
const CADENAS_PARA_PROBAR = [
	"El cadáver de Wamba, rey godo de España, fue exhumado y trasladado en una caja de zinc que pesó un kilo",  //  No
	"Hola",  //  No
	"aeiou",  //  No
	"parzibyte",  //  No
	"abcdefghijklmnñopqrstuvwxyz",  //  Sí
	"El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja",  //  Sí,
	"abcdefghijklmnopqrstuvwxyz",  // No, porque no lleva ñ
	"Mi hijo degustó en el festival de bayas una extraña pizza de kiwi con queso",  // Sí
];

CADENAS_PARA_PROBAR.forEach(cadena => {
	console.log(`¿'${cadena}' es pangrama? ${esPangrama(cadena)}`);
});

Ambos métodos tienen el mismo funcionamiento, pero el segundo ocupa menos líneas de código.

Probar ejemplos

Puedes ejecutar los ejemplos en JavaScript o en Node.JS.

Mira más sobre JavaScript en este enlace.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *