Skip to content

Commit a6e9ea6

Browse files
authored
Merge pull request mouredev#6885 from victor-Casta/[email protected]
#7 - TypeScript
2 parents 23eacab + 2ba3517 commit a6e9ea6

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
var readline = require('readline')
2+
3+
var rl = readline.createInterface({
4+
input: process.stdin,
5+
output: process.stdout
6+
})
7+
/*
8+
* EJERCICIO:
9+
* Implementa los mecanismos de introducción y recuperación de elementos propios de las
10+
* pilas (stacks - LIFO) y las colas (queue - FIFO) utilizando una estructura de array
11+
* o lista (dependiendo de las posibilidades de tu lenguaje).
12+
*/
13+
14+
//Pilas LIFO
15+
class Lifo {
16+
list: (number | string)[] = []
17+
adding(data: number | string): void {
18+
this.list.push(data)
19+
}
20+
removing(): void {
21+
this.list.pop()
22+
}
23+
}
24+
25+
const myLifo: Lifo = new Lifo
26+
myLifo.adding(1)
27+
myLifo.adding(2)
28+
myLifo.adding(3)
29+
myLifo.removing()
30+
console.log(myLifo)
31+
32+
// Colas FIFO
33+
34+
class Fifo {
35+
list: (number | string)[] = []
36+
adding(data: number | string): void {
37+
this.list.push(data)
38+
}
39+
removing(): void {
40+
this.list.shift()
41+
}
42+
}
43+
44+
const myFifo: Fifo = new Fifo
45+
myFifo.adding(1)
46+
myFifo.adding(2)
47+
myFifo.adding(3)
48+
myFifo.removing()
49+
console.log(myFifo)
50+
51+
/*
52+
* DIFICULTAD EXTRA (opcional):
53+
* - Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás
54+
* de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle
55+
* que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web.
56+
* Las palabras "adelante", "atrás" desencadenan esta acción, el resto se interpreta como
57+
* el nombre de una nueva web.
58+
* - Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una
59+
* impresora compartida que recibe documentos y los imprime cuando así se le indica.
60+
* La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se
61+
* interpretan como nombres de documentos.
62+
*/
63+
64+
function webNavigator(): void {
65+
const list: Array<string> = []
66+
rl.question('Ingresa el nombre de una web, "adelante", "atrás" o "salir": ', (response: string) => {
67+
if (response === 'atrás' && list.length > 0) {
68+
list.pop()
69+
} else if (response !== 'adelante' && response !== 'salir' && response !== 'atrás') {
70+
list.push(response)
71+
}
72+
if (response === 'salir') {
73+
rl.close()
74+
} else {
75+
console.log(`Página actual: ${list[list.length - 1] || "Inicio"}`)
76+
webNavigator()
77+
}
78+
})
79+
}
80+
webNavigator()
81+
82+
const printerList: Array<string> = []
83+
function printer(): void {
84+
console.log('list', printerList)
85+
rl.question('Ingresa imprimir o un nombre de documento: ', (response: string) => {
86+
if (response === 'imprimir') {
87+
console.log(printerList[0])
88+
printerList.shift()
89+
printer()
90+
} else if (response !== 'imprimir') {
91+
printerList.push(response)
92+
printer()
93+
} else {
94+
console.log('opcion incorrecta')
95+
rl.close()
96+
}
97+
})
98+
}
99+
100+
printer()

0 commit comments

Comments
 (0)