Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ejercicios del #23 al #24 - JavaScript #1401

Open
wants to merge 24 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
518041b
Solución Reto #1 JavaScript
Juan17Informatico Jan 24, 2025
375a3b7
Ejercicio 02 Finalizado
Juan17Informatico Jan 24, 2025
9c4a16c
Ejercicio 03 Finalizado
Juan17Informatico Jan 24, 2025
b9fe872
Ejercicio 04 Finalizado
Juan17Informatico Jan 24, 2025
6d41b04
Ejercicio 05 Finalizado
Juan17Informatico Jan 24, 2025
464e59d
Ejercicio 06 Finalizado
Juan17Informatico Jan 24, 2025
ade8698
Ejercicio 07 Finalizado
Juan17Informatico Jan 24, 2025
3ba3950
Ejercicio 08 Finalizado
Juan17Informatico Jan 24, 2025
5884149
Ejercicio 09 Finalizado
Juan17Informatico Jan 24, 2025
ec9e9c4
Ejercicio 10 Finalizado
Juan17Informatico Jan 24, 2025
6085e68
Ejercicio 11 Finalizado
Juan17Informatico Jan 24, 2025
7a62f95
Ejercicio 12 Finalizado
Juan17Informatico Jan 24, 2025
64ac1b7
Ejercicio 13 Finalizado
Juan17Informatico Jan 24, 2025
26bc4bb
Ejercicio 14 Finalizado
Juan17Informatico Jan 24, 2025
6ccd7ea
Ejercicio 15 Finalizado
Juan17Informatico Jan 24, 2025
615a9d3
Ejercicio 16 Finalizado
Juan17Informatico Jan 24, 2025
f0d0aa2
Ejercicio 17 Finalizado
Juan17Informatico Jan 24, 2025
16808a7
Ejercicio 18 Finalizado
Juan17Informatico Jan 24, 2025
364d379
Ejercicio 19 Finalizado
Juan17Informatico Jan 24, 2025
a8eeb08
Ejercicio 20 Finalizado
Juan17Informatico Jan 24, 2025
909dfa0
Ejercicio 21 Finalizado
Juan17Informatico Jan 27, 2025
f01e97e
Ejercicio 22 Finalizado
Juan17Informatico Jan 27, 2025
44e0648
Ejercicio 23 Finalizado
Juan17Informatico Jan 28, 2025
2bc67fe
Ejercicio 24 Finalizado
Juan17Informatico Jan 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions soluciones-javascript/01-fizzbuzz/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
*#1 EL FAMOSO "FIZZ BUZZ"*
***
* Escribe un programa que muestre por consola (con un print) los
* números de 1 a 100 (ambos incluidos y con un salto de línea entre
* cada impresión), sustituyendo los siguientes:
* - Múltiplos de 3 por la palabra "fizz".
* - Múltiplos de 5 por la palabra "buzz".
* - Múltiplos de 3 y de 5 a la vez por la palabra "fizzbuzz".
*/
const fizzBuzz = () => {

for (let i = 1; i <= 100; i++) {

if(i % 3 === 0 && i % 5 === 0){
console.log("fizzbuzz");
}else if (i % 3 === 0) {
console.log("fizz");
}else if( i % 5 === 0){
console.log("buzz");
}else{
console.log(i);
}

}

}

fizzBuzz();
40 changes: 40 additions & 0 deletions soluciones-javascript/02-anagrama/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
* Escribe una función que reciba dos palabras (String) y retorne
* verdadero o falso (Bool) según sean o no anagramas.
* - Un Anagrama consiste en formar una palabra reordenando TODAS
* las letras de otra palabra inicial.
* - NO hace falta comprobar que ambas palabras existan.
* - Dos palabras exactamente iguales no son anagrama.
*/

const isAnagram = (string1 = '', string2 = '') => {

//Si algún String está vacío retorna false
if(!string1 || !string2 ) return false;

if(string1.length !== string2.length ) return false;

const stringLowerCase1 = string1.toLowerCase().trim();
const stringLowerCase2 = string2.toLowerCase().trim();

//Si las palabras son exactamente iguales retorna false
if(stringLowerCase1 === stringLowerCase2) return false;

const arrayString1 = stringLowerCase1.split("").sort().join('');
const arrayString2 = stringLowerCase2.split("").sort().join('');

return arrayString1 === arrayString2;

}


console.log("Es un anagrama (amor + roma): " + isAnagram("amor", "roma"));
console.log("Es un anagrama (listen + silent): " + isAnagram("listen", "silent"));
console.log("Es un anagrama (test + test): " + isAnagram("test", "test"));
console.log("Es un anagrama ( + word): " + isAnagram("", "word"));
console.log("Es un anagrama (test + testing): " + isAnagram("test", "testing"));
console.log("Es un anagrama (Listen + Silent): " + isAnagram("Listen", "Silent"));
console.log("Es un anagrama (Dormitory + Dirty room): " + isAnagram("Dormitory", "Dirty room"));



33 changes: 33 additions & 0 deletions soluciones-javascript/03-fibonacci/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* * LA SUCESIÓN DE FIBONACCI *
* Escribe un programa que imprima los 50 primeros números de la sucesión
* de Fibonacci empezando en 0.
* - La serie Fibonacci se compone por una sucesión de números en
* la que el siguiente siempre es la suma de los dos anteriores.
* 0, 1, 1, 2, 3, 5, 8, 13...
*/


const sucesionFibonacci = ( cantidadNumeros ) => {

if ( cantidadNumeros < 0 ) return console.log(0);

let anterior = 0;
let actual = 1;

for (let i = 0; i < cantidadNumeros; i++) {

console.log(`${ i + 1 }_: ${anterior}`);

let temp = anterior;
anterior = actual + anterior;
actual = temp;

}


}



sucesionFibonacci( 50 );
24 changes: 24 additions & 0 deletions soluciones-javascript/04-numero-primo/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* Escribe un programa que se encargue de comprobar si un número es o no primo.
* Hecho esto, imprime los números primos entre 1 y 100.
*/

const esNumeroPrimo = (numero) => {
if (numero <= 1) return false;

if (numero === 2) return true;

for (let i = 2; i <= Math.sqrt(numero); i++) {
if (numero % i === 0) {
return false;
}
}

return true;
};

for (let i = 2; i < 100; i++) {
if (esNumeroPrimo(i)) {
console.log(i);
}
}
41 changes: 41 additions & 0 deletions soluciones-javascript/05-area-poligono/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* Crea una única función (importante que sólo sea una) que sea capaz
* de calcular y retornar el área de un polígono.
* - La función recibirá por parámetro sólo UN polígono a la vez.
* - Los polígonos soportados serán Triángulo, Cuadrado y Rectángulo.
* - Imprime el cálculo del área de un polígono de cada tipo.
*/

const areaPoligono = ({ tipo = "", datosPoligono = {} }) => {

const esPositivo = (n) => typeof n === 'number' && n > 0;

switch (tipo) {
case "Triangulo":
if ( esPositivo(datosPoligono.base) && esPositivo(datosPoligono.altura) ) {
return (datosPoligono.base * datosPoligono.altura) / 2;
}else{
throw new Error("Los datos del triangulo deben ser positivos");
}
case "Cuadrado":
if ( esPositivo(datosPoligono.lado) ) {
return datosPoligono.lado * datosPoligono.lado;
}else{
throw new Error("Los datos del Cuadrado deben ser positivos");
}
case "Rectangulo":
if ( esPositivo(datosPoligono.base) && esPositivo(datosPoligono.altura) ) {
return datosPoligono.base * datosPoligono.altura;
}else{
throw new Error("Los datos del Rectangulo deben ser positivos");
}
default:
throw new Error("Especifica un dato correcto");
}

}

// Ejemplos de uso
console.log(areaPoligono({ tipo: "Triangulo", datosPoligono: { base: 2, altura: 4 } }));
console.log(areaPoligono({ tipo: "Cuadrado", datosPoligono: { lado: 5 } }));
console.log(areaPoligono({ tipo: "Rectangulo", datosPoligono: { base: 3, altura: 6 } }));
43 changes: 43 additions & 0 deletions soluciones-javascript/06-aspect-ratio-image/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/*
* Crea un programa que se encargue de calcular el aspect ratio de una
* imagen a partir de una url.
* - Url de ejemplo:
* https://es.vitejs.dev/og-image-announcing-vite3.png
* - Por ratio hacemos referencia por ejemplo a los "16:9" de una
* imagen de 1920*1080px.
*/


const calcularAspectRatio = async (url) => {

const img = new Image();

img.src = url;

img.onload = () => {
const width = img.width;
const height = img.height;

// Maximo comun divisor
const mcd = ( a, b ) => b === 0 ? a : mcd( b, a % b );

console.log(mcd(width, height));

const ratioMCD = mcd(width, height);

console.log(`La resolución de la imagen es ${width}x${height}`);
console.log(`La relación de aspecto es: ${ width / ratioMCD }:${ height / ratioMCD }`);


}

img.onerror = () => {
console.error('No se pudo cargar la imagen');
}

return img;

}

const url = "https://cdn.unotv.com/images/2024/03/mazapan-perrito-influencer-143900-1024x576.jpeg"
calcularAspectRatio(url);
11 changes: 11 additions & 0 deletions soluciones-javascript/06-aspect-ratio-image/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ejercicio de programación</title>
</head>
<body>
<script src="app.js"></script>
</body>
</html>
22 changes: 22 additions & 0 deletions soluciones-javascript/07-inviertiendo-cadenas/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*
* Crea un programa que invierta el orden de una cadena de texto
* sin usar funciones propias del lenguaje que lo hagan de forma automática.
* - Si le pasamos "Hola mundo" nos retornaría "odnum aloH"
*/

const reverseTextString = (string) => {

const stringFormatter = string.trim();
let reverseText = "";

for (let i = 1; i <= stringFormatter.length; i++) {

reverseText += stringFormatter[ stringFormatter.length - i];

}

return reverseText;

}

console.log(reverseTextString(" Hola Mundo "));
11 changes: 11 additions & 0 deletions soluciones-javascript/07-inviertiendo-cadenas/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Invirtiendo cadenas</title>
</head>
<body>
<script src="app.js"></script>
</body>
</html>
25 changes: 25 additions & 0 deletions soluciones-javascript/08-contando-palabras/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/*
* Crea un programa que cuente cuantas veces se repite cada palabra
* y que muestre el recuento final de todas ellas.
* - Los signos de puntuación no forman parte de la palabra.
* - Una palabra es la misma aunque aparezca en mayúsculas y minúsculas.
* - No se pueden utilizar funciones propias del lenguaje que
* lo resuelvan automáticamente.
*/

const countWords = (text) => {
const cleanedText = text.toLowerCase().replace(/[^\w\s]/g, '');

const wordsArray = cleanedText.split(/\s+/).filter( word => word !== '');

const wordCount = {};
console.log({cleanedText}, {wordsArray});

wordsArray.forEach(word => {
wordCount[word] = (wordCount[word] || 0) + 1;
});

console.log( { wordsArray, wordCount } );
};

countWords(" Hola, asd una páasdlabra d asd asd repetida,, hotra a a dsad sad palabraasd repetida paasdq3wrlabra o hola ");
12 changes: 12 additions & 0 deletions soluciones-javascript/08-contando-palabras/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Contando Palabras</title>
</head>
<body>
<h1>Abre la consola y mira el resultado</h1>
<script src="app.js"></script>
</body>
</html>
20 changes: 20 additions & 0 deletions soluciones-javascript/09-decimal-binario/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/*
* Crea un programa se encargue de transformar un número
* decimal a binario sin utilizar funciones propias del lenguaje que lo hagan directamente.
*/

const decimalToBinary = (number) => {
let numberBinary = [];
let numberNew = number;

while (numberNew > 0) {
numberBinary.unshift(Math.floor(numberNew % 2));
numberNew = Math.floor(numberNew / 2);
}

return numberBinary.join("");


};

console.log(decimalToBinary(10));
12 changes: 12 additions & 0 deletions soluciones-javascript/09-decimal-binario/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>09 Decimal a Binario</title>
</head>
<body>
<h1>Abre la consola para ver el ejercicio</h1>
<script src="app.js"></script>
</body>
</html>
32 changes: 32 additions & 0 deletions soluciones-javascript/10-codigo-morse/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* Crea un programa que sea capaz de transformar texto natural a código
* morse y viceversa.
* - Debe detectar automáticamente de qué tipo se trata y realizar
* la conversión.
* - En morse se soporta raya "—", punto ".", un espacio " " entre letras
* o símbolos y dos espacios entre palabras " ".
* - El alfabeto morse soportado será el mostrado en
* https://es.wikipedia.org/wiki/Código_morse.
*/

console.log({dataMorseCode});

const codigoMorse = (text) => {

return text.toUpperCase().split('').map( word => {

if(dataMorseCode[word]){
return dataMorseCode[word]
} else if (word === " "){
return "/";
}else {
return "";
}

}).join(" ");

}

console.log(codigoMorse("Prueba x"));
console.log(codigoMorse("Otra prueba con diferasduhwq signficado, ayuda ´++´{}"));
console.log(codigoMorse("Me gusta la cigueña, la malta y la inmal también jaja esxs xsxsada"));
11 changes: 11 additions & 0 deletions soluciones-javascript/10-codigo-morse/dataMorseCode.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
const dataMorseCode = {
A: ".-", B: "-...", C: "-.-.", D: "-..",
E: ".", F: "..-.", G: "--.", H: "....",
I: "..", J: ".---", K: "-.-", L: ".-..",
M: "--", N: "-.", Ñ: "--.--", O: "---",
P: ".--.", Q: "--.-", R: ".-.", S: "...",
T: "-", U: "..-", V: "...-", W: ".--",
X: "-..-", Y: "-.--", Z: "--..",
'0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-',
'5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.'
};
Loading