Skip to content

Commit f3d950c

Browse files
authored
Merge pull request #8963 from pedamoci/main
"#18 - javascript"
2 parents f5f8c84 + 2970ad4 commit f3d950c

File tree

8 files changed

+560
-0
lines changed

8 files changed

+560
-0
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
let conjunto = ['sada', 75654, 21, 3347, 'asd', 'adsd']
2+
3+
// añadiendo elemento al final del conjunto
4+
conjunto.push('último elemento')
5+
console.log(conjunto)
6+
7+
// añadiendo elemento al principio del conjunto
8+
conjunto.splice(0,0,'primer elemento')
9+
console.log(conjunto)
10+
11+
// añadiendo varios elementos en bloque al final
12+
conjunto = conjunto.concat([['eB1', 'eB2', 'eB3']])
13+
console.log(conjunto)
14+
15+
// añadiendo varios elementos en bloque en una posición concreta
16+
conjunto.splice(3, 0, ['eB1', 'eB2', 'eB3'])
17+
console.log(conjunto)
18+
19+
// eliminando un elementos en una posición concreta
20+
conjunto.splice(5, 1)
21+
console.log(conjunto)
22+
23+
// actualizando el valor de un elementos en una posición concreta
24+
conjunto.splice(7, 1, 'ya no soy el último elemento')
25+
console.log(conjunto)
26+
27+
// comprobando si un elementos esta en el conjunto
28+
console.log(conjunto.includes(21))
29+
30+
// eliminando todo el contenido conjunto
31+
conjunto.splice(0, conjunto.length)
32+
console.log(conjunto)
33+
34+
// --------------------------------------- DIFICULTAD EXTRA ---------------------------------------
35+
let arrConjunto1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
36+
let arrConjunto2 = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
37+
38+
// Unión
39+
let union = arrConjunto1.concat(arrConjunto2)
40+
console.log(`La unión de los dos conjuntos es ${union}`)
41+
42+
// intersección
43+
let interseccion = []
44+
arrConjunto1.forEach((e) => {if (arrConjunto2.includes(e)) interseccion.push(e)})
45+
console.log(interseccion)
46+
47+
// Diferencia en arrConjunto1
48+
let difArrConjunto1 = []
49+
arrConjunto1.forEach((e) => {if (!arrConjunto2.includes(e)) difArrConjunto1.push(e)})
50+
console.log(difArrConjunto1)
51+
52+
// Diferencia en arrConjunto2
53+
let difArrConjunto2 = []
54+
arrConjunto2.forEach((e) => {if (!arrConjunto1.includes(e)) difArrConjunto2.push(e)})
55+
console.log(difArrConjunto2)
56+
57+
// Diferencia simétrica
58+
let diferenciaSimetrica = []
59+
arrConjunto1.forEach((e) => {if (!arrConjunto2.includes(e)) diferenciaSimetrica.push(e)})
60+
arrConjunto2.forEach((e) => {if (!arrConjunto1.includes(e)) diferenciaSimetrica.push(e)})
61+
console.log(diferenciaSimetrica)
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
const Semana = Object.freeze({
2+
LUNES: 'LUNES',
3+
MARTES: 'MARTES',
4+
MIERCOLES: 'MIERCOLES',
5+
JUEVES: 'JUEVES',
6+
VIERNES: 'VIERNES',
7+
SABADO: 'SABADO',
8+
DOMINGO: 'DOMINGO'
9+
})
10+
11+
function diaDeLaSemana(num) {
12+
if (num > 7) num %= 7
13+
switch (num) {
14+
case 1: return(Semana.LUNES);
15+
case 2: return(Semana.MARTES);
16+
case 3: return(Semana.MIERCOLES);
17+
case 4: return(Semana.JUEVES);
18+
case 5: return(Semana.VIERNES);
19+
case 6: return(Semana.SABADO);
20+
default: return(Semana.DOMINGO);
21+
}
22+
}
23+
24+
console.log(diaDeLaSemana(15))
25+
console.log(diaDeLaSemana(2))
26+
console.log(diaDeLaSemana(24))
27+
console.log(diaDeLaSemana(53))
28+
console.log(diaDeLaSemana(6))
29+
console.log(diaDeLaSemana(49))
30+
// --------------------------------- DIFICULTAD EXTRA ---------------------------------
31+
const Estado = Object.freeze({
32+
PENDIENTE: 'PENDIENTE',
33+
ENVIADO: 'ENVIADO',
34+
ENTREGADO: 'ENTREGADO',
35+
CANCELADO: 'CANCELADO'
36+
})
37+
38+
class Pedido {
39+
constructor(id) {
40+
this.id = id
41+
this.estado = 'CREADO'
42+
}
43+
44+
cambiarEstado(estado) {
45+
switch (estado) {
46+
case Estado.PENDIENTE:
47+
(this.estado === 'CREADO') ? console.log(`Se ha cambiado el estado de su pedido a: ${this.estado = Estado.PENDIENTE}`)
48+
: console.log(`No se podido cambiar el estado a pendiente, el estado de su pedido es: ${this.estado}`)
49+
break;
50+
case Estado.ENVIADO:
51+
(this.estado === Estado.PENDIENTE) ? console.log(`Se ha cambiado el estado de su pedido a: ${this.estado = Estado.ENVIADO}`)
52+
: console.log(`No se podido cambiar el estado a enviado, el estado de su pedido es: ${this.estado}`)
53+
break;
54+
case Estado.ENTREGADO:
55+
(this.estado === Estado.ENVIADO) ? console.log(`Se ha cambiado el estado de su pedido a: ${this.estado = Estado.ENTREGADO}`)
56+
: console.log(`No se podido cambiar el estado a entregado, el estado de su pedido es: ${this.estado}`)
57+
break;
58+
case Estado.CANCELADO:
59+
(this.estado === Estado.ENTREGADO || this.estado === Estado.CANCELADO) ? console.log('No se ha podido cancelar su pedido')
60+
: (this.estado !== Estado.ENVIADO) ? console.log(`Su pedido se ha ${this.estado = Estado.CANCELADO}`) // se cancela si esta en estado pendiente o creado
61+
: console.log(`Su pepido se ha ${this.estado = Estado.CANCELADO} el repartidor tuvo un accidente`)
62+
break;
63+
default:
64+
console.log('El estado solicitado para el pedido no existe')
65+
break;
66+
}
67+
}
68+
69+
estadoActual() {
70+
switch (this.estado) {
71+
case Estado.PENDIENTE:
72+
console.log('Su pedido esta pendiente seguramente dentro de unos minutos sera enviado')
73+
break;
74+
case Estado.ENVIADO:
75+
console.log('Su pedido ya ha sido enviado, en unos minutos le llegara\n¡Esperamos que lo disfrute!')
76+
break;
77+
case Estado.ENTREGADO:
78+
console.log('El pedido ha sido entregado\nDeje un comentario de como fue su experiencia')
79+
break;
80+
case Estado.CANCELADO:
81+
console.log('Ups su pedido esta cancelado, esperemos que no pase la proxima ;)')
82+
break;
83+
default:
84+
console.log('El pedido se ha creado con exito, dentro de unos minutos ya estara pendiente')
85+
break;
86+
}
87+
}
88+
}
89+
90+
const pedidoEntregado = new Pedido(159753)
91+
pedidoEntregado.cambiarEstado(Estado.PENDIENTE)
92+
pedidoEntregado.cambiarEstado(Estado.ENVIADO)
93+
pedidoEntregado.cambiarEstado(Estado.ENTREGADO)
94+
console.log('\n')
95+
const pedidoCancelado = new Pedido(159753)
96+
pedidoCancelado.cambiarEstado(Estado.PENDIENTE)
97+
pedidoCancelado.cambiarEstado(Estado.ENVIADO)
98+
pedidoCancelado.cambiarEstado(Estado.CANCELADO)
99+
pedidoCancelado.estadoActual()
100+
console.log('\n')
101+
const pedidoVerEstados = new Pedido(159753)
102+
pedidoVerEstados.estadoActual()
103+
pedidoVerEstados.cambiarEstado(Estado.PENDIENTE)
104+
pedidoVerEstados.estadoActual()
105+
pedidoVerEstados.cambiarEstado(Estado.ENVIADO)
106+
pedidoVerEstados.estadoActual()
107+
pedidoVerEstados.cambiarEstado(Estado.ENTREGADO)
108+
pedidoVerEstados.estadoActual()
109+
console.log('\n')
110+
const pedidoCambiarMalEstados = new Pedido(159753)
111+
pedidoCambiarMalEstados.cambiarEstado(Estado.PENDIENTE)
112+
pedidoCambiarMalEstados.cambiarEstado(Estado.ENTREGADO)
113+
pedidoCambiarMalEstados.cambiarEstado(Estado.ENVIADO)
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
const respuesta = await fetch('https://retosdeprogramacion.com/roadmap')
2+
if (respuesta.ok) {
3+
const contenido = await respuesta.text()
4+
console.log(contenido)
5+
}
6+
7+
// ------------------------------ DIFICULTAD EXTRA ------------------------------
8+
import readline from "readline"
9+
10+
function preguntar(pregunta) {
11+
const rl = readline.createInterface({
12+
input: process.stdin,
13+
output: process.stdout
14+
})
15+
16+
return new Promise(resolve => {
17+
rl.question(pregunta, (respuesta) => {
18+
rl.close()
19+
resolve(respuesta)
20+
})
21+
})
22+
}
23+
24+
async function Pokemon(pokemon) {
25+
const urlApi = 'https://pokeapi.co/api/v2/pokemon/'
26+
try {
27+
const responsePokemon = await fetch(`${urlApi}${pokemon}`)
28+
if (!responsePokemon.ok) throw new Error("No se pudo obtener información sobre ese pokemon")
29+
const characteristic = await responsePokemon.json()
30+
console.log('Caracteristicas del pokemon ingresado:\n' +
31+
`Nombre: ${characteristic.name}\n` +
32+
`ID: ${characteristic.id}\n` +
33+
`Peso: ${characteristic.weight}\n` +
34+
`Altura: ${characteristic.height}\n` +
35+
`Tipos: ${characteristic.types[0].type.name}, ${characteristic.types[1].type.name}`)
36+
37+
const responseSpecies = await fetch(`${characteristic.species.url}`) //
38+
const infoSpecies = await responseSpecies.json() // INFORMACION NECESARIA PARA LLEGAR A LA CADENA EVOLUTIVA
39+
const responceChainEvolutions = await fetch(`${infoSpecies.evolution_chain.url}`) //
40+
const infoChainEvolutions = await responceChainEvolutions.json()
41+
if (infoChainEvolutions.chain.evolves_to.length === 0) console.log('El pokemon no tiene cadena evolutiva')
42+
else {
43+
let evolutionChain = infoChainEvolutions.chain
44+
let evolutions = [evolutionChain.species.name]
45+
while (evolutionChain.evolves_to.length !== 0) {
46+
evolutions.push(evolutionChain.evolves_to[0].species.name)
47+
evolutionChain = evolutionChain.evolves_to[0]
48+
}
49+
console.log(`Cadena evolutiva: ${evolutions.join(', ')}`)
50+
}
51+
52+
if (characteristic.game_indices.length === 0) console.log('La información sobre en que juegos aparece este pokemon no esta disponible')
53+
else {
54+
const games = characteristic.game_indices.map((x) => x.version.name)
55+
console.log(`Juegos en los que aparece: ${games.join(', ')}`)
56+
}
57+
58+
} catch (e) {
59+
console.log(e)
60+
}
61+
}
62+
63+
Pokemon(await preguntar('De que pokemon quieres obtener información?? (inserta el nobre o el número de la pokedex)\n'))
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
function sumar(a, b) {
2+
console.log( a + b)
3+
}
4+
5+
function pedirNumeros(callback) {
6+
let a = 42
7+
let b = 56
8+
callback(a, b)
9+
}
10+
11+
pedirNumeros(sumar)
12+
13+
// -------------------------------------- DIFICULTAD EXTRA --------------------------------------
14+
function confirmar(plato) {
15+
console.log(`Se ha confirmado el pedido de: ${plato}`)
16+
}
17+
18+
function preparar(plato) {
19+
console.log(`Tu ${plato} ya esta listo`)
20+
}
21+
22+
function entregar() {
23+
console.log(`Ya se ha entregado tu pedido`)
24+
}
25+
26+
function seguimientoPedido(plato, comprobar, elaborar, repartir) {
27+
const functions = [comprobar, elaborar, repartir]
28+
console.log('Procesando...')
29+
for (let i = 0; i < functions.length; i++) {
30+
setTimeout(() => {
31+
functions[i](plato)
32+
}, 1000 + Math.floor(Math.random() * 10000))
33+
}
34+
}
35+
36+
seguimientoPedido('ramen', confirmar, preparar, entregar)
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
// FUNCIONES DE ORDEN SUPERIOR
2+
// Reciben una función como parametro
3+
function calcular(a, b, metodo) {
4+
console.log(metodo(a, b))
5+
}
6+
7+
const sumar = (num1, num2)=> {
8+
return num1 + num2
9+
}
10+
11+
calcular(5, 62, sumar)
12+
13+
// Devuelven una función
14+
function devolverMetodo(num) {
15+
if (num > 10) {
16+
return multiplicar = (num1, num2)=>{
17+
console.log(num1 * num2)
18+
}
19+
} else {
20+
return sumar = (num1, num2)=> {
21+
console.log(num1 + num2)
22+
}
23+
}
24+
}
25+
26+
let metodo = devolverMetodo(23)
27+
28+
metodo(45, 32)
29+
// ----------------------------------- DIFICULTAD EXTRA -----------------------------------
30+
const listaEstudiantes = [{
31+
nombre: "Juan",
32+
fechaNacimiento: "12/05/04",
33+
notas: [6.75, 1.22, 3.47, 3.01, 7.62]
34+
}, {
35+
nombre: "Agus",
36+
fechaNacimiento: "23/02/05",
37+
notas: [7.08, 9.02, 1.78, 4.79, 1.27]
38+
}, {
39+
nombre: "Victor",
40+
fechaNacimiento: "26/12/04",
41+
notas: [2.97, 5.54, 1.24, 2.79, 6.84]
42+
}, {
43+
nombre: "Caterina",
44+
fechaNacimiento: "04/06/04",
45+
notas: [10.0, 9.45, 9.06, 9.5, 9.76]
46+
}, {
47+
nombre: "Raul",
48+
fechaNacimiento: "13/11/05",
49+
notas: [1.06, 8.24, 7.28, 4.06, 2.4]
50+
}, {
51+
nombre: "David",
52+
fechaNacimiento: "08/08/05",
53+
notas: [9.61, 4.03, 1.83, 1.87, 8.62]
54+
}, {
55+
nombre: "Jesus",
56+
fechaNacimiento: "18/07/04",
57+
notas: [9.6, 9.8, 9.72, 9.53, 9.96]
58+
}, {
59+
nombre: "Eugenia",
60+
fechaNacimiento: "01/04/05",
61+
notas: [9.37, 9.55, 9.82, 9.61, 9.85]
62+
}]
63+
64+
65+
const listaPromedios = listaEstudiantes.map((estudiante) => {
66+
let prom = estudiante.notas.reduce((p, nota) => (p += nota / estudiante.notas.length), 0)
67+
return {nombre: estudiante.nombre, promedio: prom.toFixed(2)}
68+
})
69+
console.log(listaPromedios)
70+
71+
const mejoresPromedios = listaPromedios.filter((estudiante) => estudiante.promedio >= 9)
72+
console.log(mejoresPromedios)
73+
74+
const listaNacimiento = listaEstudiantes
75+
.map((estudiante) => ({
76+
nombre: estudiante.nombre,
77+
fecha: estudiante.fechaNacimiento.split('/')
78+
}))
79+
.sort((a, b) =>
80+
parseInt(a.fecha[2]) - parseInt(b.fecha[2]) || // los ordena en forma creciente por año, si es el mismo pasa a comparar el mes
81+
parseInt(a.fecha[1]) - parseInt(b.fecha[1]) || // los ordena en forma creciente por mes, si es el mismo pasa a comparar el día
82+
parseInt(a.fecha[0]) - parseInt(b.fecha[0]) // los ordena en forma creciente por día
83+
)
84+
console.log(listaNacimiento)
85+
86+
const mejorNota = listaEstudiantes.filter((estudiante) => sacoDiez(estudiante.notas))
87+
function sacoDiez(notas) {
88+
return notas.includes(10)
89+
}
90+
console.log(mejorNota)

0 commit comments

Comments
 (0)