diff --git a/2024/04-cadenas-de-caracteres/README.md b/2024/04-cadenas-de-caracteres/README.md new file mode 100644 index 0000000..eb11dd1 --- /dev/null +++ b/2024/04-cadenas-de-caracteres/README.md @@ -0,0 +1,17 @@ +# Reto 04: Cadenas de caracteres + +## Enunciado + +EJERCICIO: + +Muestra ejemplos de todas las operaciones que puedes realizar con cadenas de caracteres en tu lenguaje. Algunas de esas operaciones podrían ser (busca todas las que puedas): + +- Acceso a caracteres específicos, subcadenas, longitud, concatenación, repetición, recorrido, conversión a mayúsculas y minúsculas, reemplazo, división, unión, interpolación, verificación... + +DIFICULTAD EXTRA (opcional): + +Crea un programa que analice dos palabras diferentes y realice comprobaciones para descubrir si son: + +- Palíndromos +- Anagramas +- Isogramas diff --git a/2024/04-cadenas-de-caracteres/index.js b/2024/04-cadenas-de-caracteres/index.js new file mode 100644 index 0000000..b405ea8 --- /dev/null +++ b/2024/04-cadenas-de-caracteres/index.js @@ -0,0 +1,83 @@ +/* eslint-disable no-console */ +// Operaciones comunes con cadenas de caracteres + +// Acceso a caracteres específicos +const cadena = 'Hola, mundo!'; +console.log('Carácter en la posición 0:', cadena[0]); + +// Subcadenas +const subcadena = cadena.substring(2, 6); +console.log('Subcadena:', subcadena); + +// Longitud de la cadena +console.log('Longitud de la cadena:', cadena.length); + +// Concatenación +const otraCadena = ' Qué tal?'; +const cadenaConcatenada = cadena + otraCadena; +console.log('Cadena concatenada:', cadenaConcatenada); + +// Repetición +const cadenaRepetida = cadena.repeat(3); +console.log('Cadena repetida 3 veces:', cadenaRepetida); + +// Recorrido +for (let i = 0; i < cadena.length; i++) { + console.log('Carácter en posición', i, ':', cadena[i]); +} + +// Conversión a mayúsculas y minúsculas +const mayusculas = cadena.toUpperCase(); +const minusculas = cadena.toLowerCase(); +console.log('Mayúsculas:', mayusculas); +console.log('Minúsculas:', minusculas); + +// Reemplazo +const nuevaCadena = cadena.replace('mundo', 'amigo'); +console.log('Cadena con reemplazo:', nuevaCadena); + +// División +const palabras = cadena.split(' '); +console.log('Palabras divididas:', palabras); + +// Unión +const union = palabras.join('-'); +console.log('Palabras unidas con guiones:', union); + +// Interpolación +const nombre = 'Juan'; +const edad = 30; +const mensaje = `Hola, me llamo ${nombre} y tengo ${edad} años.`; +console.log('Mensaje interpolado:', mensaje); + +// Verificación +const contieneHola = cadena.includes('Hola'); +console.log("¿La cadena contiene 'Hola'?", contieneHola); + +// Programa que verifica palíndromos, anagramas e isogramas + +function esPalindromo(palabra) { + const palabraInvertida = palabra.split('').reverse().join(''); + return palabra === palabraInvertida; +} + +function esAnagrama(palabra1, palabra2) { + const ordenPalabra1 = palabra1.split('').sort().join(''); + const ordenPalabra2 = palabra2.split('').sort().join(''); + return ordenPalabra1 === ordenPalabra2; +} + +function esIsograma(palabra) { + const caracteresUnicos = new Set(palabra); + return palabra.length === caracteresUnicos.size; +} + +// Ejemplos +const palabra1 = 'oso'; +const palabra2 = 'soso'; +console.log(`"${palabra1}" es palíndromo:`, esPalindromo(palabra1)); +console.log( + `"${palabra1}" es anagrama de "${palabra2}":`, + esAnagrama(palabra1, palabra2), +); +console.log(`"${palabra1}" es isograma:`, esIsograma(palabra1)); diff --git a/2024/04-cadenas-de-caracteres/solution.ts b/2024/04-cadenas-de-caracteres/solution.ts new file mode 100644 index 0000000..28f7e06 --- /dev/null +++ b/2024/04-cadenas-de-caracteres/solution.ts @@ -0,0 +1,79 @@ +// Operaciones comunes con cadenas de caracteres + +// Acceso a caracteres específicos +const cadena: string = "Hola, mundo!"; +console.log("Carácter en la posición 0:", cadena[0]); + +// Subcadenas +const subcadena: string = cadena.substring(2, 6); +console.log("Subcadena:", subcadena); + +// Longitud de la cadena +console.log("Longitud de la cadena:", cadena.length); + +// Concatenación +const otraCadena: string = " Qué tal?"; +const cadenaConcatenada: string = cadena + otraCadena; +console.log("Cadena concatenada:", cadenaConcatenada); + +// Repetición +const cadenaRepetida: string = cadena.repeat(3); +console.log("Cadena repetida 3 veces:", cadenaRepetida); + +// Recorrido +for (let i: number = 0; i < cadena.length; i++) { + console.log("Carácter en posición", i, ":", cadena[i]); +} + +// Conversión a mayúsculas y minúsculas +const mayusculas: string = cadena.toUpperCase(); +const minusculas: string = cadena.toLowerCase(); +console.log("Mayúsculas:", mayusculas); +console.log("Minúsculas:", minusculas); + +// Reemplazo +const nuevaCadena: string = cadena.replace("mundo", "amigo"); +console.log("Cadena con reemplazo:", nuevaCadena); + +// División +const palabras: string[] = cadena.split(" "); +console.log("Palabras divididas:", palabras); + +// Unión +const union: string = palabras.join("-"); +console.log("Palabras unidas con guiones:", union); + +// Interpolación +const nombre: string = "Juan"; +const edad: number = 30; +const mensaje: string = `Hola, me llamo ${nombre} y tengo ${edad} años.`; +console.log("Mensaje interpolado:", mensaje); + +// Verificación +const contieneHola: boolean = cadena.includes("Hola"); +console.log("¿La cadena contiene 'Hola'?", contieneHola); + +// Programa que verifica palíndromos, anagramas e isogramas + +function esPalindromo(palabra: string): boolean { + const palabraInvertida: string = palabra.split("").reverse().join(""); + return palabra === palabraInvertida; +} + +function esAnagrama(palabra1: string, palabra2: string): boolean { + const ordenPalabra1: string = palabra1.split("").sort().join(""); + const ordenPalabra2: string = palabra2.split("").sort().join(""); + return ordenPalabra1 === ordenPalabra2; +} + +function esIsograma(palabra: string): boolean { + const caracteresUnicos: Set = new Set(palabra); + return palabra.length === caracteresUnicos.size; +} + +// Ejemplos +const palabra1: string = "oso"; +const palabra2: string = "soso"; +console.log(`"${palabra1}" es palíndromo:`, esPalindromo(palabra1)); +console.log(`"${palabra1}" es anagrama de "${palabra2}":`, esAnagrama(palabra1, palabra2)); +console.log(`"${palabra1}" es isograma:`, esIsograma(palabra1));