Skip to content

Ejercicios 65 y 66 - JavaScript #1421

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

Open
wants to merge 69 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 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
91528c1
Ejercicio 25 Finalizado
Juan17Informatico Jan 29, 2025
37bfa26
Ejercicio 26 Finalizado
Juan17Informatico Jan 29, 2025
eebac4f
Se agrega .vscode en las reglas de .gitignore
Juan17Informatico Jan 30, 2025
e6b48c8
Ejercicio 27 Finalizado
Juan17Informatico Jan 30, 2025
df051ac
Ejercicio 28 Finalizado
Juan17Informatico Jan 30, 2025
4187dbc
Ejercicio 29 Finalizado
Juan17Informatico Jan 31, 2025
073d7a5
Ejercicio 30 Finalizado
Juan17Informatico Jan 31, 2025
08932b5
Ejercicio 31 Finalizado
Juan17Informatico Feb 3, 2025
c27c0e9
Ejercicio 24 Finalizado
Juan17Informatico Feb 3, 2025
939f147
Corrección al ejercicio 32
Juan17Informatico Feb 3, 2025
1122975
Ejercicio 33 Finalizado
Juan17Informatico Feb 4, 2025
39e1037
Ejercicio 34 Finalizado
Juan17Informatico Feb 4, 2025
706f2a0
Ejercicio 35 Finalizado
Juan17Informatico Feb 5, 2025
3c8c2f3
Ejercicio 36 Finalizado
Juan17Informatico Feb 5, 2025
78e31d4
Ejercicio 37 Finalizado
Juan17Informatico Feb 6, 2025
fa3dc37
Ejercicio 38 Finalizado
Juan17Informatico Feb 6, 2025
4a8d00c
Ejercicio 39 Finalizado
Juan17Informatico Feb 7, 2025
908036d
Ejercicio 40 Finalizado
Juan17Informatico Feb 7, 2025
46d2925
Ejercicio 41 Finalizado
Juan17Informatico Feb 8, 2025
9b06ecf
Ejercicio 42 Finalizado
Juan17Informatico Feb 10, 2025
7bb17b1
Ejercicio 43 Finalizado
Juan17Informatico Feb 11, 2025
74400e2
Ejercicio 44 Finalizado
Juan17Informatico Feb 11, 2025
9f3a6f6
Ejercicio 45 Finalizado
Juan17Informatico Feb 12, 2025
f514f9e
Ejercicio 46 Finalizado
Juan17Informatico Feb 12, 2025
25a5378
Ejercicio 47 Finalizado
Juan17Informatico Feb 13, 2025
824c4b8
Ejercicio 48 Finalizado
Juan17Informatico Feb 13, 2025
3037a0d
Ejercicio 49 Finalizado
Juan17Informatico Feb 14, 2025
9659699
Ejercicio 50 Finalizado
Juan17Informatico Feb 14, 2025
daf01bf
Ejercicio 51 Finalizado
Juan17Informatico Feb 15, 2025
9137a03
Ejercicio 52 Finalizado
Juan17Informatico Feb 15, 2025
959cf93
Ejercicio 53 Finalizado
Juan17Informatico Feb 17, 2025
a98edc8
Ejercicio 54 Finalizado
Juan17Informatico Feb 17, 2025
241d9b3
Ejercicio 55 Finalizado
Juan17Informatico Feb 18, 2025
e05d57f
Ejercicio 56 Finalizado
Juan17Informatico Feb 18, 2025
d41563a
Ejercicio 57 Finalizado
Juan17Informatico Feb 21, 2025
2a3ccbc
Ejercicio 58 Finalizado
Juan17Informatico Feb 21, 2025
c0bc856
Ejercicio 58 Finalizado
Juan17Informatico Feb 21, 2025
caab914
Ejercicio 59 Finalizado
Juan17Informatico Feb 24, 2025
a8c4297
Ejercicio 60 Finalizado
Juan17Informatico Feb 24, 2025
ad5af98
Ejercicio 61 Finalizado
Juan17Informatico Feb 26, 2025
e2bb7cf
Ejercicio 62 Finalizado
Juan17Informatico Feb 26, 2025
dde0f71
Ejercicio 63 Finalizado
Juan17Informatico Feb 27, 2025
a4809ba
Ejercicio 64 Finalizado
Juan17Informatico Feb 27, 2025
f8b29be
Ejercicio 65 Finalizado
Juan17Informatico Feb 28, 2025
034bff9
Ejercicio 66 Finalizado
Juan17Informatico Feb 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
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@

.vscode
# Created by https://www.toptal.com/developers/gitignore/api/android,androidstudio,kotlin
# Edit at https://www.toptal.com/developers/gitignore?templates=android,androidstudio,kotlin

Expand Down
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