Skip to content

Commit d8476b6

Browse files
authored
Merge pull request mouredev#7243 from JuSeRDev/JuSeRDev
#3-juserdev
2 parents fdbe530 + 4a6dd11 commit d8476b6

File tree

2 files changed

+396
-0
lines changed

2 files changed

+396
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,278 @@
1+
/*
2+
* EJERCICIO:
3+
* - Muestra ejemplos de creación de todas las estructuras soportadas por defecto en tu lenguaje.
4+
* - Utiliza operaciones de inserción, borrado, actualización y ordenación.
5+
*
6+
* DIFICULTAD EXTRA (opcional):
7+
* Crea una agenda de contactos por terminal.
8+
* - Debes implementar funcionalidades de búsqueda, inserción, actualización y eliminación de contactos.
9+
* - Cada contacto debe tener un nombre y un número de teléfono.
10+
* - El programa solicita en primer lugar cuál es la operación que se quiere realizar, y a continuación
11+
* los datos necesarios para llevarla a cabo.
12+
* - El programa no puede dejar introducir números de teléfono no númericos y con más de 11 dígitos.
13+
* (o el número de dígitos que quieras)
14+
* - También se debe proponer una operación de finalización del programa.
15+
*/
16+
17+
//OBJETO
18+
interface Person {
19+
names: string;
20+
age: number;
21+
}
22+
23+
let persona1: Person = {
24+
names: "Sebastian Rodriguez",
25+
age: 33,
26+
}
27+
28+
console.log(persona1)
29+
console.log(`La edad de ${persona1.names} es de ${persona1.age} años`)
30+
31+
interface Person { //insercion opcional directo en interface
32+
city?: string
33+
}
34+
35+
persona1.city = "Barranquilla"
36+
console.log(persona1)
37+
console.log(`La edad de ${persona1.names} es de ${persona1.age} años y su ciudad es en ${persona1.city}`)
38+
39+
persona1.age = 34 //actualizacion
40+
console.log(`Cambiamos la edad de persona1, antes era 33 y ahora es: ${persona1.age}`)
41+
42+
persona1["hobby"] = "Tocar la guitarra" // insercion directa
43+
console.log(persona1)
44+
45+
delete persona1.city //borre la propiedad city de persona1
46+
console.log(persona1)
47+
48+
49+
// ARRAY
50+
51+
const myArray: number[] = [1,2,3,4,5] // este es un array de numeros
52+
console.log(myArray)
53+
54+
myArray.push(6) //push se utiliza para agregar
55+
console.log(myArray)
56+
57+
const lastElement = myArray.pop() //ELIMINA EL ULTIMO ELEMENTO DEL ARRAY
58+
console.log(lastElement)
59+
console.log(myArray)
60+
61+
const firstElement = myArray.shift() // ELIMINA EL PRIMER ELEMENTO DEL ARRAY
62+
console.log(firstElement)
63+
console.log(myArray)
64+
65+
myArray.unshift(0,1) // AGREGA 1 O VARIOS ELEMENTOS AL COMIENZO DEL ARRAY
66+
console.log(myArray)
67+
68+
myArray.splice(1, 0, 10) //agrega un elemento en la posicion deseada
69+
console.log(myArray)
70+
71+
myArray.splice(1, 1) // ELIMINA UN ELEMENTO EN LA POSICION DESEADA
72+
console.log(myArray)
73+
74+
myArray.sort() // ORDENA EN EL ARRAY EN ORDEN ACENDENTE
75+
console.log(myArray)
76+
77+
myArray.reverse() // INVIERTE EL ORDEN DE LOS ELEMENTOS
78+
console.log(myArray)
79+
80+
// CLASES = MAPS
81+
82+
const myMap = new Map<string, number>() // CREACION DE CLASE
83+
84+
myMap.set("sebastian", 30) //INSERCION CON .SET
85+
myMap.set("laura", 31)
86+
console.log(myMap)
87+
88+
let laura = myMap.get("laura") // BUSQUEDA
89+
console.log(laura)
90+
91+
myMap.delete("laura") // ELIMINA UNA CLASE DEL MAP
92+
console.log(myMap)
93+
94+
// VERIFICA SI EXISTE LA CLASE
95+
console.log(myMap.has("sebastian"))
96+
console.log(myMap.has("laura"))
97+
98+
console.log(myMap.size) // CON SIZE PUEDO SABER EL TAMAÑO DEL MAP
99+
100+
// SET
101+
102+
const mySet = new Set<number>([1,2,3,4,5])
103+
console.log(mySet)
104+
105+
mySet.add(6) // INSERCION
106+
console.log(mySet)
107+
mySet.add(5) // NO ACEPTA DUPLICACIONES
108+
console.log(mySet)
109+
110+
mySet.delete(2) //BORRA
111+
console.log(mySet)
112+
113+
console.log(mySet.has(2)) // VERIFICA SI CONTIENE EL ELEMENTO Y DEVUELVE TRUE O FALSE
114+
console.log(mySet.has(4)) // VERIFICA SI CONTIENE EL ELEMENTO Y DEVUELVE TRUE O FALSE
115+
116+
console.log(mySet.size) // MUESTRA EL TAMAÑO DE SET
117+
118+
mySet.clear() // LIMPIA TODO EL SET
119+
console.log(mySet)
120+
console.log(mySet.size)
121+
122+
// EXTRA - AGENDA DE CONTACTOS
123+
124+
const readline = require("readline")!
125+
126+
const rl = readline.createInterface({
127+
input: process.stdin,
128+
output: process.stdout
129+
})
130+
131+
const contactos = new Map<string, string>()
132+
133+
const addContact = ()=>{
134+
rl.question("Escriba su nombre: ", (nombre:string)=>{
135+
rl.question("Escriba su numero de celular: ", (celular:string)=>{
136+
const regex = /^\d{1,9}$/;
137+
if (contactos.has(nombre)) {
138+
console.log("El contacto ya existe")
139+
console.log("")
140+
addContact()
141+
}else {
142+
if (!regex.test(celular)) {
143+
contactos.set(nombre, celular)
144+
console.log("")
145+
console.log(`Contacto nuevo: ${nombre}: ${contactos.get(nombre)}`)
146+
console.log("")
147+
console.log(`Tienes "${contactos.size}" contactos`)
148+
console.log("")
149+
agenda()
150+
} else{
151+
console.log("esta errado")
152+
addContact()
153+
}
154+
}
155+
156+
})
157+
})
158+
}
159+
160+
const searchContacts = ()=>{
161+
rl.question("Escribe el nombre del contacto que deseas buscar: ",(nombre: string)=>{
162+
if (contactos.has(nombre)) {
163+
console.log("")
164+
console.log(`nombre: ${nombre}`)
165+
console.log(`telefono: ${contactos.get(nombre)}`)
166+
console.log("")
167+
agenda()
168+
} else{
169+
console.log("el contacto no existe")
170+
agenda()
171+
}
172+
})
173+
}
174+
175+
const deleteContact = ()=>{
176+
console.table(contactos)
177+
console.log("")
178+
if (contactos.size === 0) {
179+
console.log("no hay contactos para eliminar")
180+
console.log("")
181+
agenda()
182+
} else{
183+
rl.question("Escriba el nombre del contacto que desea eliminar: ", (nombre:string)=>{
184+
let deleteContact = nombre
185+
contactos.delete(nombre)
186+
console.log("")
187+
console.table(contactos)
188+
console.log("")
189+
console.log(`Contacto "${deleteContact}" eliminado`)
190+
agenda()
191+
})
192+
}
193+
}
194+
195+
const replaceContact = ()=>{
196+
rl.question("Cual es el contacto que deseas reemplazar: ", (nombre: string)=>{
197+
let usuario: string = nombre
198+
let telefono = contactos.get(nombre)
199+
console.log("")
200+
if (contactos.has(nombre)) {
201+
console.log(`${usuario}: ${telefono}`)
202+
console.log("")
203+
rl.question("que deseas reemplazar, nombre o telefono: ", (opcion: string)=>{
204+
if (opcion === "nombre") {
205+
contactos.delete(nombre)
206+
console.log("")
207+
rl.question("cual es el nuevo nombre: ", (nuevoNombre: string)=>{
208+
contactos.set(nuevoNombre, telefono!)
209+
console.table(contactos)
210+
console.log("contacto reemplazado")
211+
console.log("")
212+
agenda()
213+
})
214+
} else if (opcion === "telefono") {
215+
contactos.delete(nombre)
216+
console.log("")
217+
rl.question("cual es el nuevo telefono: ", (nuevoTelefono: string)=>{
218+
contactos.set(usuario, nuevoTelefono)
219+
console.table(contactos)
220+
console.log("contacto reemplazado")
221+
console.log("")
222+
agenda()
223+
})
224+
}
225+
})
226+
} else {
227+
console.log(`El contacto ${nombre} no existe`)
228+
console.log("")
229+
agenda()
230+
}
231+
})
232+
}
233+
234+
const viewContact = ()=>{
235+
console.table(contactos)
236+
console.log("")
237+
console.log(`Total contactos: ${contactos.size}`)
238+
console.log("")
239+
agenda()
240+
}
241+
242+
const agenda = ()=>{
243+
console.log("BIENVENIDO A TU AGENDA DE CONTACTOS")
244+
console.log("")
245+
rl.question(`Que deseas hacer ahora:
246+
1. Agregar contacto
247+
2. Buscar contacto
248+
3. Eliminar contacto
249+
4. Reemplazar contacto
250+
5. Mostrar contactos
251+
6. Salir
252+
253+
`,(numero:string) =>{
254+
switch (numero) {
255+
case "1":
256+
addContact()
257+
break;
258+
case "2":
259+
searchContacts()
260+
break
261+
case "3":
262+
deleteContact()
263+
break
264+
case "4":
265+
replaceContact()
266+
break
267+
case "5":
268+
viewContact()
269+
break
270+
case "6":
271+
rl.close()
272+
default:
273+
break;
274+
}
275+
})
276+
}
277+
278+
agenda()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
/*
2+
* EJERCICIO:
3+
* Muestra ejemplos de todas las operaciones que puedes realizar con cadenas de caracteres
4+
* en tu lenguaje. Algunas de esas operaciones podrían ser (busca todas las que puedas):
5+
* - Acceso a caracteres específicos, subcadenas, longitud, concatenación, repetición, recorrido,
6+
* conversión a mayúsculas y minúsculas, reemplazo, división, unión, interpolación, verificación...
7+
*
8+
* DIFICULTAD EXTRA (opcional):
9+
* Crea un programa que analice dos palabras diferentes y realice comprobaciones
10+
* para descubrir si son:
11+
* - Palíndromos
12+
* - Anagramas
13+
* - Isogramas
14+
*/
15+
16+
const texto: string = "hello typeScript"
17+
console.log(texto[0]) //obtiene el caracter en la posicion indicada, en este caso en la posicion 0
18+
console.log(texto.charAt(6)) //hace lo mismo que el anterior
19+
console.log(texto.length) // obtiene la logitud del string
20+
21+
//concatenaciones
22+
23+
const saludar: string = "hola "
24+
const lenguaje: string = "typescript"
25+
26+
console.log(saludar + lenguaje)
27+
console.log(saludar.concat(lenguaje))
28+
29+
// repeticion
30+
31+
console.log(texto.repeat(2)) //repite la cadena de texto n numero de veces
32+
33+
// conversion a mayusculas y minusculas
34+
35+
console.log(texto.toUpperCase())
36+
console.log(texto.toLowerCase())
37+
38+
console.log(texto.replace("hello" , "hi"))
39+
console.log(texto.replace("t" , "T"))
40+
41+
// division
42+
const palabras: string[] = texto.split(" ")
43+
console.log(palabras)
44+
45+
//union
46+
47+
console.log(palabras.join(", "))
48+
49+
//interpolacion
50+
console.log(`Hola ${lenguaje}`)
51+
52+
//verificacion
53+
54+
console.log(texto.startsWith("hello"))
55+
console.log(texto.endsWith("typeScript"))
56+
console.log(texto.includes("type"))
57+
58+
//recorrido
59+
60+
for (const char of texto) {
61+
console.log(char)
62+
}
63+
64+
//Extra
65+
66+
interface returnFunction { //esto es el retorno de la funcion
67+
anagrama: string,
68+
isograma: string,
69+
palindromo: string
70+
}
71+
72+
const comprobaciones = (a: string, b: string): returnFunction =>{
73+
let ar = a.split("").reverse().join("")
74+
let br = b.split("").reverse().join("")
75+
76+
let aa = a.split("").sort().join("")
77+
let ba = b.split("").sort().join("")
78+
79+
let ai = a.split("").sort().join("")
80+
let aiSet = [...new Set(ai)].join("")
81+
let bi = b.split("").sort().join("")
82+
let biSet = [...new Set(bi)].join("")
83+
84+
let isograma: string
85+
86+
if (ai === aiSet && bi === biSet) {
87+
isograma = `Tanto "${a}" como "${b}" son isogramas`
88+
} else if (ai === aiSet && bi !== biSet) {
89+
isograma = `"${a}" es un isograma y "${b}" no lo es`
90+
} else if (ai !== aiSet && bi === biSet) {
91+
isograma = `"${b}" es un isograma y "${a}" no lo es`
92+
} else {
93+
isograma = `Ni "${a}" es un isograma y "${b}" tampoco`
94+
}
95+
96+
let anagrama: string
97+
anagrama = aa === ba ? `Las palabras "${a}" y "${b}" son anagramas` : `Las palabras "${a}" y "${b}" no son anagramas`
98+
99+
let palindromo: string
100+
101+
if (a === ar && b === br) {
102+
palindromo = `Tanto "${a}" como "${b}" son palindromas`
103+
} else if (a === ar && b !== br) {
104+
palindromo = `"${a}" es palindroma y "${b}" no lo es`
105+
} else if (a!==ar && b === br) {
106+
palindromo =` "${a}" no es palindroma pero "${b}" si lo es`
107+
} else{
108+
palindromo = `Ninguna de las palabras es palindroma`
109+
}
110+
111+
return {anagrama, palindromo, isograma}
112+
}
113+
114+
console.log(comprobaciones("carne", "ana"))
115+
console.log(comprobaciones("radar", "ana"))
116+
console.log(comprobaciones("radar", "carlos"))
117+
console.log(comprobaciones("carlos", "ana"))
118+
console.log(comprobaciones("juan", "carlos"))

0 commit comments

Comments
 (0)