Skip to content

Commit cecc0ba

Browse files
committed
adding #7 challenge for python
1 parent 2875b84 commit cecc0ba

File tree

1 file changed

+156
-0
lines changed

1 file changed

+156
-0
lines changed
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
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

Comments
 (0)