javascript

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

2 horas hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

24 horas hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

6 días hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

3 semanas hace

Esta web usa cookies.