Skip to content

Commit 4da60d7

Browse files
committed
#7 - JavaScript
1 parent 1658517 commit 4da60d7

File tree

1 file changed

+135
-0
lines changed
  • Roadmap/07 - PILAS Y COLAS/javascript

1 file changed

+135
-0
lines changed
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
// Pila
2+
var pila = []
3+
4+
pila.push(1)
5+
pila.push(2)
6+
pila.push(3)
7+
8+
// console.log(pila)
9+
10+
pila.pop()
11+
12+
// console.log(pila)
13+
14+
// Cola
15+
var cola = []
16+
17+
cola.push('a')
18+
cola.push('b')
19+
cola.push('c')
20+
21+
// console.log(cola)
22+
23+
cola.shift()
24+
25+
// console.log(cola)
26+
27+
/*
28+
Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás
29+
de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle
30+
que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web.
31+
Las palabras "adelante", "atrás" desencadenan esta acción, el resto se interpreta como
32+
el nombre de una nueva web.
33+
*/
34+
35+
let readline = require('readline')
36+
let rl = readline.createInterface({ input: process.stdin, output: process.stdout })
37+
atras = []
38+
adelante = []
39+
40+
41+
function web_navigation() {
42+
43+
rl.question('Ingresa una url o interactua con palabras "adelante", "atras" o "salir": ', (answer) => {
44+
let inputFormat = answer.trim().toLowerCase()
45+
46+
switch (inputFormat) {
47+
case 'adelante':
48+
atras.push(adelante.pop())
49+
currentPage(atras)
50+
web_navigation()
51+
break
52+
case 'atras':
53+
if (isEmpty(atras)) {
54+
currentPage(atras)
55+
web_navigation()
56+
} else {
57+
adelante.push(atras.pop())
58+
currentPage(atras)
59+
web_navigation()
60+
}
61+
break
62+
case 'salir':
63+
rl.close()
64+
break
65+
default:
66+
adelante = []
67+
atras.push(inputFormat)
68+
currentPage(atras)
69+
web_navigation()
70+
break
71+
}
72+
})
73+
74+
}
75+
76+
function isEmpty(pila) {
77+
return pila.length === 0
78+
}
79+
80+
function currentPage(pila) {
81+
return isEmpty(pila) ? console.log('Estás en la página de inicio') : console.log(`Estas en la web ${pila[pila.length - 1]}`)
82+
}
83+
84+
// web_navigation()
85+
86+
/*
87+
Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una
88+
impresora compartida que recibe documentos y los imprime cuando así se le indica.
89+
La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se
90+
interpretan como nombres de documentos.
91+
*/
92+
93+
cola = []
94+
95+
function printer() {
96+
97+
printQueue(cola)
98+
99+
rl.question('Ingresa un documento o elige "imprimir" o "salir": ', (answer) => {
100+
let inputFormat = answer.trim().toLowerCase()
101+
102+
switch (inputFormat) {
103+
case 'imprimir':
104+
if (cola.length === 0) {
105+
console.log('No hay documentos en cola para imprimir.')
106+
printer()
107+
} else {
108+
console.log(`\n Imprimiendo ${cola.shift()}`)
109+
printer()
110+
}
111+
break
112+
case 'salir':
113+
rl.close()
114+
break
115+
default:
116+
cola.push(inputFormat)
117+
printer()
118+
break
119+
}
120+
})
121+
}
122+
123+
function printQueue(cola) {
124+
if (cola.length === 0) {
125+
console.log('\n No hay documentos en cola para imprimir.\n')
126+
} else {
127+
console.log(`\n Cola de impresión`)
128+
cola.forEach(document => {
129+
console.log(document)
130+
})
131+
console.log('\n')
132+
}
133+
}
134+
135+
printer()

0 commit comments

Comments
 (0)