1+ ###################################
2+ # Dev: rianojnicolas #
3+ ###################################
4+
5+ from collections import deque
6+
7+ # EJERCICIO:
8+
9+ ## Listas como Pilas - LIFO (last in first out)
10+ def stackMethod (stack , action , element = None ):
11+ """
12+ Inputs:
13+ stack: lista de elementos
14+ action: accion a realizar "push"/"pop"/"peek"
15+ element: elemento a insertar/eliminar/devolver ultimo elemento
16+ Outputs:
17+ stack: lista de elementos
18+ """
19+ if action == "push" :
20+ stack .append (element )
21+ return stack
22+ elif action == "pop" :
23+ stack .pop ()
24+ return stack
25+ elif action == "peek" :
26+ return stack [len (stack )- 1 ]
27+
28+ print ("Prueba del metodo stack-LIFO" )
29+ myStack = [1 ,2 ,3 ,4 ,5 ]
30+ print (stackMethod (myStack , "push" , 6 ))
31+ print (stackMethod (myStack , "pop" ))
32+ print (stackMethod (myStack , "peek" ))
33+
34+ ## Listas como Colas - FIFO (first in first out)
35+
36+ def queueMethod (queue , action , element = None ):
37+ """
38+ Inputs:
39+ queue: lista de elementos
40+ action: accion a realizar "enqueue"/"dequeue"/"queue"
41+ element: elemento a insertar/eliminar/devolver primer elemento
42+ Outputs:
43+ queue: lista de elementos
44+ """
45+ if action == "enqueue" :
46+ queue .append (element )
47+ return queue
48+ elif action == "dequeue" :
49+ queue .popleft ()
50+ return queue
51+ elif action == "peek" :
52+ return queue [0 ]
53+
54+ print ("Prueba del metodo queue-FIFO" )
55+ myQueue = deque ([1 ,2 ,3 ,4 ,5 ])
56+ print (queueMethod (myQueue , "enqueue" , 6 ))
57+ print (queueMethod (myQueue , "dequeue" ))
58+ print (queueMethod (myQueue , "peek" ))
59+
60+
61+ # DIFICULTAD EXTRA
62+
63+ # Web - LIFO
64+ def webNavigation ():
65+ """
66+ Funcion que simula el navegador web
67+ y realiza las acciones de ingreso de url,
68+ adelante, atras y salida
69+
70+ inputs: -
71+ outputs:
72+ print(url)
73+ """
74+
75+ print ("""
76+
77+ Hola, soy el navegador web y
78+ Estas en la pagina principal
79+
80+ """ )
81+ stack = []
82+
83+ while True :
84+
85+ accion = input ("Ingresa una accion (adelante/atras/salir): " )
86+
87+ if accion == "adelante" :
88+ url = input ("Ingresa una url: " )
89+ stack = stackMethod (stack , "push" , url )
90+ elif accion == "atras" :
91+ if len (stack ) > 0 :
92+ stack = stackMethod (stack , "pop" )
93+ else :
94+ pass
95+ elif accion == "salir" :
96+ print ("Saliendo del navegador" )
97+ break
98+ else :
99+ print ("Accion incorrecta" )
100+ print ("Opciones: adelante/atras/salir" )
101+ pass
102+
103+ if len (stack ) == 0 :
104+ print ("Estas en la pagina principal" )
105+ pass
106+ elif len (stack ) > 0 :
107+ print (stackMethod (stack , "peek" ))
108+
109+
110+ webNavigation ()
111+
112+
113+ # Impresora Compartida - FIFO
114+ def printerShared ():
115+ """
116+ Funcion que simula la impresora compartida
117+ y realiza las acciones de ingreso de documento,
118+ impresion y salida
119+
120+ inputs: -
121+ outputs:
122+ print(document)
123+ """
124+
125+ print ("""
126+
127+ Hola, soy la impresora compartida
128+
129+ """ )
130+
131+ queue = deque ()
132+
133+ while True :
134+
135+ accion = input ("Ingresa una accion (agregar/imprimir/salir): " )
136+
137+ if accion == "agregar" :
138+ document = input ("Ingresa un documento: " )
139+ queue = queueMethod (queue , "enqueue" , document )
140+ elif accion == "imprimir" :
141+ if len (queue ) > 0 :
142+ print ("Imprimiendo documento - " + queueMethod (queue , "peek" ))
143+ document = queueMethod (queue , "dequeue" )
144+ else :
145+ print ("No hay documentos en la impresora" )
146+ pass
147+ elif accion == "salir" :
148+ print ("Saliendo de la impresora" )
149+ break
150+ else :
151+ print ("Accion incorrecta" )
152+ print ("Opciones: imprimir/salir" )
153+ pass
154+
155+
156+ printerShared ()
0 commit comments