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