Skip to content

Commit b02f551

Browse files
authored
Merge pull request #8967 from barrancus/patch-2
#7 - barrancus
2 parents dbb8368 + a4bba41 commit b02f551

File tree

1 file changed

+136
-0
lines changed

1 file changed

+136
-0
lines changed
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
"#[número] - [lenguaje_utilizado]"
2+
#
3+
# EJERCICIO:
4+
# Implementa los mecanismos de introducción y recuperación de elementos propios de las
5+
# pilas (stacks - LIFO) y las colas (queue - FIFO) utilizando una estructura de array
6+
# o lista (dependiendo de las posibilidades de tu lenguaje).
7+
#
8+
# DIFICULTAD EXTRA (opcional):
9+
# - Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás
10+
# de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle
11+
# que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web.
12+
# Las palabras "adelante", "atrás" desencadenan esta acción, el resto se interpreta como
13+
# el nombre de una nueva web.
14+
# - Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una
15+
# impresora compartida que recibe documentos y los imprime cuando así se le indica.
16+
# La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se
17+
# interpretan como nombres de documentos.
18+
#
19+
def serparacion(cadena):
20+
print('{}'.format(cadena * 20))
21+
22+
palabras_aleatorias = [
23+
"Abismo", "Brújula", "Cántaro", "Delicado", "Ébano", "Fervor", "Gema", "Horizonte", "Ímpetu", "Joven",
24+
"Kilogramo", "Laberinto", "Mármol", "Nácar", "Órbita", "Papiro", "Quirúrgico", "Radiante", "Sutil", "Tímpano",
25+
"Utopía", "Vértigo", "Xenofobia", "Yacimiento", "Zócalo", "Armonía", "Bohemio", "Céfiro", "Diligencia", "Efímero",
26+
"Furtivo", "Grácil", "Hélice", "Ígneo", "Jolgorio", "Kiosco", "Lánguido", "Melancolía", "Nostalgia", "Ópalo",
27+
"Pálido", "Quimera", "Risueño", "Solitario", "Tácito", "Umbral", "Voraz", "Xilófono", "Yunque", "Zodiaco",
28+
"Algoritmo", "Bitácora", "Cristal", "Destello", "Espejismo", "Fractal", "Glaciar", "Hechizo", "Ilusión", "Jíbaro",
29+
"Karma", "Lunar", "Magia", "Nebulosa", "Ocre", "Panacea", "Quijote", "Relámpago", "Sigilo", "Tundra",
30+
"Ukelele", "Vaina", "Walabi", "Yoga", "Zafiro", "Ágora", "Bizarro", "Crisálida", "Diáfano", "Efusión",
31+
"Fugaz", "Gárgola", "Hada", "Inmune", "Júbilo", "Kaolín", "Límpido", "Metamorfosis", "Nítido", "Onírico",
32+
"Peregrino", "Quórum", "Rostro", "Súbito", "Trémulo", "Usurpador", "Voluble", "Xilografía", "Yodo", "Zambullida",
33+
"Abnegación", "Botella", "Cataclismo", "Desván", "Enigmático", "Filosofía", "Girasol", "Hilera", "Invierno", "Jerarquía",
34+
"Koala", "Licor", "Mirada", "Néctar", "Obsequio", "Pócima", "Quijada", "Ráfaga", "Sombrío", "Talismán",
35+
"Universo", "Vaho", "Waflera", "Yegua", "Zepelín", "Acentuar", "Binario", "Clavícula", "Desidia", "Énfasis",
36+
"Fantasma", "Glamour", "Horizonte", "Incandescente", "Jazmín", "Kaleidoscopio", "Luminoso", "Monolito", "Nudillo", "Óleo",
37+
"Polvo", "Quieto", "Rompecabezas", "Silencio", "Transparente", "Ulterior", "Vertiente", "Xiita", "Yacimiento", "Zaguán",
38+
"Anacronismo", "Bombilla", "Colmena", "Divagar", "Esmeralda", "Flecha", "Galaxia", "Hongo", "Idolatría", "Joya",
39+
"Kayak", "Letargo", "Melodía", "Nido", "Ocaso", "Palabras", "Quetzal", "Rumor", "Sabor", "Trama",
40+
"Urna", "Viento", "Wombat", "Yate", "Zarpa", "Altruista", "Bamba", "Célula", "Despertar", "Escarcha",
41+
"Farol", "Gaveta", "Hiena", "Incierto", "Jacarandá", "Kilo", "Lápiz", "Máscara", "Neón", "Olla",
42+
"Pluma", "Querubín", "Rinoceronte", "Sombra", "Tijera", "Útil", "Vacío", "Whisky", "Yacaré", "Zafarrancho"
43+
]
44+
def fifo():
45+
my_lista = []
46+
for element in palabras_aleatorias:
47+
if len(my_lista) <= 10:
48+
my_lista.append(element)
49+
else:
50+
output = my_lista.pop(0)
51+
print(output, end=", ")
52+
my_lista.append(element)
53+
restante = len(my_lista)
54+
for element in range(restante):
55+
output = my_lista.pop(0)
56+
if element == restante - 1:
57+
print(output)
58+
else:
59+
print(output, end=", ")
60+
61+
def lifo():
62+
my_lista = []
63+
for element in palabras_aleatorias:
64+
if len(my_lista) <= 10:
65+
my_lista.append(element)
66+
else:
67+
output = my_lista.pop(-1)
68+
print(output, end=", ")
69+
my_lista.append(element)
70+
restante = len(my_lista)
71+
for element in range(restante):
72+
output = my_lista.pop(-1)
73+
if element == restante - 1:
74+
print(output)
75+
else:
76+
print(output, end=", ")
77+
78+
def navegacion():
79+
my_lista = []
80+
my_lista_fow =[]
81+
cururl = ''
82+
while True:
83+
print('Por favor indica la url a la que quieres navegar, o si quieres ir "atras" o "adelante", o "salir"')
84+
url = input('>').lower()
85+
match url:
86+
case "salir":
87+
return
88+
case "atras":
89+
if len(my_lista) > 0:
90+
my_lista_fow.insert(0, cururl)
91+
cururl = my_lista.pop()
92+
print(f'{"-"*50}\nhttp://{cururl}\n{"-"*50}')
93+
else:
94+
print("No hay datos de web anteriores")
95+
case "adelante":
96+
if len(my_lista_fow) > 0:
97+
my_lista.append(cururl)
98+
cururl = my_lista_fow.pop(0)
99+
print(f'{"-"*50}\nhttp://{cururl}\n{"-"*50}')
100+
else:
101+
print('No hay ninguna web guardada')
102+
case _:
103+
my_lista.append(cururl)
104+
cururl = url
105+
print(f'{"-"*50}\nhttp://{cururl}\n{"-"*50}')
106+
if len(my_lista_fow) > 0: my_lista_fow.clear()
107+
108+
def imprimir():
109+
my_lista_impr = []
110+
while True:
111+
print('Por favor envía el archivo, dale a "imprimir" o "salir"')
112+
document = input('>').lower()
113+
match document:
114+
case "salir":
115+
return
116+
case "imprimir":
117+
if len(my_lista_impr) == 0:
118+
print(f'{"-"*50}\nNúmero de documentos que hay en la cola de impresión: {len(my_lista_impr)}\n{"-"*50}')
119+
else:
120+
printdocument = my_lista_impr.pop(0)
121+
print(f'{"-"*50}\nImprimiento el documento: {printdocument} \nNúmero de documentos que quedan en la cola de impresión: {len(my_lista_impr)}\n{"-"*50}')
122+
case _:
123+
my_lista_impr.append(document)
124+
print(f'{"-"*50}\nNúmero de documentos en la cola de impresión: {len(my_lista_impr)}\n{"-"*50}')
125+
126+
def main():
127+
fifo()
128+
serparacion('.-')
129+
lifo()
130+
serparacion('.-')
131+
navegacion()
132+
serparacion('.-')
133+
imprimir()
134+
serparacion('.-')
135+
136+
main()

0 commit comments

Comments
 (0)