def inicializacion(self, duracion_simulacion): super(Simulacion2mec, self).inicializacion(duracion_simulacion) self.estado_mecanico = [Simulacion.DESOCUPADO, Simulacion.DESOCUPADO] self.cola_mecanico = [Cola('mecanico'), Cola('mecanico')] # Lista de eventos self.lista_de_eventos = { 'arribo_pala': [ Evento('arribo_pala'), Evento('arribo_pala'), Evento('arribo_pala') ], 'partida_pala': [ Evento('partida_pala'), Evento('partida_pala'), Evento('partida_pala') ], 'arribo_aplastador': Evento('arribo_aplastador'), 'partida_aplastador': Evento('partida_aplastador'), 'fin_de_reparacion': [Evento('fin_de_reparacion'), Evento('fin_de_reparacion')] }
def inicializacion(self, duracion_simulacion): self.duracion_simulacion = duracion_simulacion # Contadores Estadisticos self.tiempo_ocioso = 0 self.total_material_transportado = 0 self.total_descomposturas = 0 self.acrt = 0 # Variables de estado self.reloj_simulacion = 0 self.estado_pala = [ Simulacion.DESOCUPADO, Simulacion.DESOCUPADO, Simulacion.DESOCUPADO ] self.estado_aplastador = Simulacion.DESOCUPADO self.estado_mecanico = Simulacion.DESOCUPADO self.ult_ubicacion_mecanico = 'pala' self.ultima_medicion_descomposturas = 0 self.dcrt = 0 self.colas_pala = [] for i in range(3): cola_pala = Cola('pala') cola_pala.agregar(Camion(50, i)) cola_pala.agregar(Camion(20, i)) cola_pala.agregar(Camion(20, i)) self.colas_pala.append(cola_pala) self.cola_aplastador = Cola('aplastador') self.cola_mecanico = Cola('mecanico') # Lista de eventos self.lista_de_eventos = { 'arribo_pala': [ Evento('arribo_pala'), Evento('arribo_pala'), Evento('arribo_pala') ], 'partida_pala': [ Evento('partida_pala'), Evento('partida_pala'), Evento('partida_pala') ], 'arribo_aplastador': Evento('arribo_aplastador'), 'partida_aplastador': Evento('partida_aplastador'), 'fin_de_reparacion': Evento('fin_de_reparacion') }
def test(self): cola = Cola() #Define medico y cola cola.enqueue("Pedro")# Ingresa un paciente en la cola de Pablo cola.enqueue("Marco")# Ingresa un paciente en la cola de Pablo self.agregarMedico("Pablo", cola) #Ingresa a pablo y su cola de pacientes mCola = self.dict["Pablo"] #Saca cola de pacienes de pablo print(mCola.dequeue())#saca el siguiente paciente en la cola print(mCola.dequeue())#saca el siguiente paciente en la cola cola1 = Cola() #// cola1.enqueue("P") cola1.enqueue("M") self.agregarCola("Jose", cola1) mCola = self.dict["Jose"] # // print(mCola.dequeue()) print(mCola.dequeue())
def ejercicio_22(): obj_Cola = Cola() array_Personajes_MCU = [ ['Tony Stark', 'Iron Man', 'M'], ['Thor Odinson', 'Thor', 'M'], ['Carol Danvers','Capitana Marvel','F'], ['Steve Rogers', 'Capitan America', 'M'], ['Scott Lang', 'Hombre Hormiga', 'F'], ['Stephen Strange', 'Doctor Strange', 'M'], ] for i in range(0, len(array_Personajes_MCU)): obj_Cola.arribo(array_Personajes_MCU[i]) print('NOMBRE DE CAPITANA MARVEL') print(get_Mensaje_Si_Existe_Personaje_O_Super_Heroe(get_Nombre_Personaje(obj_Cola, 'Capitana Marvel'), 'Capitana Marvel')) print('\nSUPER HEROINAS') print(get_Personajes_Concatenados_De_Un_Vector(get_Super_Heroinas(obj_Cola))) print('PERSONAJES MASCULINOS') print(get_Personajes_Concatenados_De_Un_Vector(get_Personajes_Masculinos(obj_Cola))) print('NOMBRE DE SUPER HEROE DE SCOTT LANG') print(get_Mensaje_Si_Existe_Personaje_O_Super_Heroe(get_Nombre_Del_Super_Heroe(obj_Cola, 'Scott Lang'), 'Scott Lang')) print('\nPERSONAJES Y SUPER HEROES CON INICIAL S') print(get_Personajes_Concatenados_De_Una_Matriz(get_Nombres_Con_S(obj_Cola))) print('NOMBRE DE SUPER HEROE DE CAROL DANVERS') print(get_Mensaje_Si_Existe_Personaje_O_Super_Heroe(get_Nombre_Del_Super_Heroe(obj_Cola, 'Carol Danvers'), 'Carol Danvers'))
def guardar_estados_clave(estados,angulo): """Devuelve una cola con los estados clave (de inflexión) que definen dibujo""" pluma = Pluma() tortuga = Tortuga(pluma) estados_clave = Cola() pila_tortugas = Pila() encolar_estado_clave(tortuga, estados_clave) #guarda la posición [0,0] con orientación 0 y pluma = True como "inicio" for _ in range(len(estados.items)): accion = estados.desencolar() if not str(accion).isdigit(): if type(accion) == bool: tortuga.pluma.cambiar_estado() elif accion == '+': tortuga.derecha(angulo) elif accion == '-': tortuga.izquierda(angulo) elif accion == '|': tortuga.orientacion += radians(180) elif accion == '[': tortuga = apilar_tortuga(tortuga, pila_tortugas) elif accion == ']': encolar_estado_clave(tortuga, estados_clave) estados_clave.encolar(CAMBIO_DE_TORTUGA) tortuga = desapilar_tortuga(tortuga, pila_tortugas) encolar_estado_clave(tortuga, estados_clave) else: tortuga.adelante(accion) encolar_estado_clave(tortuga, estados_clave) return estados_clave
def main(): a = Cola() for i in range(0, 10): a.encolar((int)(1 + random() * 20)) a.imprimir() a.desencolar() a.imprimir()
def ejercicio_11(): obj_Cola = Cola() Mat_PJ_de_SW = [ ['Chewbacca', 'Anoat'], ['Obi-Wan Kenobi', 'Tatooine'], ['Yoda','Endor'], ['BB8', 'Alderaan'], ['Padme Amidala','Atollon'], ['Luke Skywalker', 'Tatooine'], ['Han Solo','Corellia'], ['Jar Jar Binks', 'Anoat'] ] for datos_PJ in Mat_PJ_de_SW: obj_Cola.arribo(datos_PJ) print('\nMOSTRAR PERSONAJE CON SU PLANETA DE ORIGEN\n') mostrar_Pj_De_Star_Wars_Con_Su_Planeta(get_Pj_De_Los_Planetas_Alderaan_Endor_Tatooine(obj_Cola)) print('\nPLANETA DE LUKE Y HAN\n') mostrar_Planeta_Natal_De_Luke_Y_Han_Solo(get_Planeta_Natal_De_Luke_Y_Han_Solo(obj_Cola)) print('\nINSERTAR PERSONAJE ANTES QUE YODA\n') insertar_Personaje_Antes_Que_Yoda(obj_Cola) imprimir_Cola(obj_Cola) print('\nELIMINAR PERSONAJE DESPUES DE JAR JAR BINKS\n') eliminar_Personaje_Despues_De_Jar_Jar_Binks(obj_Cola) imprimir_Cola(obj_Cola)
def main(): cupos = randrange(1, 10) parqueaderos = Cola() horarios = [ Horario(1, 6, 13), Horario(2, 6, 15), Horario(3, 8, 12), Horario(4, 9, 16) ] motos = [ Moto("EPF123", "verde", 3), Moto("EXF123", "azul", 3), Moto("EPQ123", "negra", 3), Moto("QEF123", "blanca", 3), Moto("LHJ123", "rosada", 3), Moto("POI123", "gris", 3) ] estudiantes = [ Estudiante(20112020005, "Felipe Duitama", 1, 1), Estudiante(20112020005, "Felipe Duitama", 2, 2), Estudiante(20112020005, "Felipe Duitama", 3, 3), Estudiante(20112020005, "Felipe Duitama", 4, 4), Estudiante(20112020005, "Felipe Duitama", 1, 5), ] if len(parqueaderos.items) < cupos: estudiante = choice(estudiantes) parqueaderos.encolar(estudiante) estudiantes.remove(estudiante) print(parqueaderos.items)
def parser(cadena, user): try: full_file = os.path.abspath(os.path.join(cadena)) dom = ElementTree.parse(full_file) if user.mat == None: ejex = dom.find('matriz/x').text ejey = dom.find('matriz/y').text matriz = Matriz() matriz.crear(ejey, ejex) user.mat = matriz trans = Matriz() trans.crear(ejex, ejey) user.trans = trans cola = Cola() operacion = dom.findall('operaciones/operacion') if user.cola == None: for op in operacion: cola.queque(op.text) user.cola = cola else: for op in operacion: user.cola.queque(op.text) print "----------cargado exitosamente----------" except IOError: print "este archivo no existe en esta carpeta" return user
def orden_topologico(grafo): res = [] orden = {} visitados = set() for v in grafo.obt_vertices(): orden[v] = 0 for v in grafo.obt_vertices(): for w in grafo.obtener_vecinos(v): orden[w] += 1 cola = Cola() for v, grado in orden.items(): if grado == 0: cola.encolar(v) while (not cola.esta_vacia()): v = cola.desencolar() if v in visitados: continue res.append(v) visitados.add(v) for w in grafo.obtener_vecinos(v): orden[w] -= 1 for v, grado in orden.items(): if grado == 0: cola.encolar(v) return res
def inicializacion(self, duracion_simulacion): super(SimulacionUnaCola, self).inicializacion(duracion_simulacion) self.cola_pala = Cola('pala') for i in range(3): self.cola_pala.agregar(Camion(50)) for k in range(2): self.cola_pala.agregar(Camion(20)) # Lista de eventos self.lista_de_eventos = { 'arribo_pala': Evento('arribo_pala'), 'partida_pala': [ Evento('partida_pala'), Evento('partida_pala'), Evento('partida_pala') ], 'arribo_aplastador': Evento('arribo_aplastador'), 'partida_aplastador': Evento('partida_aplastador'), 'fin_de_reparacion': Evento('fin_de_reparacion') }
def main(): # Test Cola Pala cola_pala = Cola('pala') lista = [ Camion(20, idn=1), Camion(50, idn=2), Camion(20, idn=3), Camion(50, idn=4) ] for item in lista: cola_pala.agregar(item) lista_ids = [cam.idn for cam in cola_pala.cola] if lista_ids != [1, 2, 3, 4]: print(lista_ids) print([1, 2, 3, 4]) return False # Test _obtener_indice_ultima_ocurrencia cola_indices = Cola('asd') cola_indices.cola = [ Camion(20, idn=1), Camion(50, idn=2), Camion(20, idn=3), Camion(50, idn=4) ] indice = cola_pala._obtener_indice_ultima_ocurrencia(50) if indice != 3: print(indice) print(3) return False # Test Cola aplastador cola_aplanador = Cola('aplastador') for item in lista: cola_aplanador.agregar(item) lista_ids = [cam.idn for cam in cola_aplanador.cola] if lista_ids != [2, 4, 1, 3]: print(lista_ids) print([2, 4, 1, 3]) return False return True
def ejercicio_6(): obj_Cola = Cola() for i in range(0, 15): obj_Cola.arribo(randint(1, 10)) numero = int(input('ingrese un numero: ')) print('Cantidad de ocurrencias: ', contar_Ocurrencias(obj_Cola, numero))
def barrido_por_nivel_huff(self): pendientes = Cola() pendientes.arribo(self) while(not pendientes.cola_vacia()): nodo = pendientes.atencion() print(nodo.info, nodo.frecuencia) if(nodo.izq is not None): pendientes.arribo(nodo.izq) if(nodo.der is not None): pendientes.arribo(nodo.der)
def barrido_por_nivel_huff(self): """Realiza el barrido por nivel del arbol con codigos de Huffman.""" pendientes = Cola() pendientes.arribo(self) while (not pendientes.cola_vacia()): nodo = pendientes.atencion() print(nodo.info, nodo.datos) if (nodo.izq is not None): pendientes.arribo(nodo.izq) if (nodo.der is not None): pendientes.arribo(nodo.der)
def barrido_por_nivel(self): """Realiza el barrido por nivel del arbol.""" pendientes = Cola() pendientes.arribo(self) while (not pendientes.cola_vacia()): nodo = pendientes.atencion() print(nodo.info) if (nodo.izq is not None): pendientes.arribo(nodo.izq) if (nodo.der is not None): pendientes.arribo(nodo.der)
def encolar_personas_enlistas_colectivos(lista_eventos): personas = Cola() colectivos = [] for evento in lista_eventos: if evento[1] == 'p': personas.encolar(evento) else: colectivos.append(evento) return personas, colectivos
def ejercicio_12(): obj_Cola_1 = Cola() obj_Cola_2 = Cola() obj_Cola_Unificada = Cola() Cola_Concatenada = '[ ' vec_Num_1 = [1,3,5,6,8,9,11,12,13,16] vec_Num_2 = [0,0,0,0,1,1,2,3,6,7,10,13,14,15] for i in range(0, len(vec_Num_1)): obj_Cola_1.arribo(vec_Num_1[i]) for i in range(0,len(vec_Num_2)): obj_Cola_2.arribo(vec_Num_2[i]) obj_Cola_Unificada = unificar_Colas(obj_Cola_1, obj_Cola_2) for i in range(0, obj_Cola_Unificada.tamanio()): Cola_Concatenada += str(obj_Cola_Unificada.mover_final()) + ' ,' print(Cola_Concatenada, ']')
def contar_personas(personas)): if personas.esta_vacia(): return 0 i = 1 cola_aux = Cola() while not personas.esta_vacia(): cola_aux.encolar(personas.desencolar()) i +=1 while not cola_aux.esta_vacia(): personas.encolar(cola_aux.desencolar()) return i
def topologico_grados(grafo): g_ent = grados_entrada(grafo) q = Cola() for v in grafo: if g_ent[v] == 0: q.encolar(v) resultado = [] while not q.esta_vacia(): v = q.desencolar() resultado.append(v) for w in grafo.adyacentes(v): g_ent[w] -= 1 if g_ent[w] == 0: q.encolar(w) return resultado
def contar_archivos(self, equipo): if equipo.cola_de_impresion.esta_vacia(): return 0 i = 1 cola_aux = Cola() while not equipo.cola_de_impresion.esta_vacia(): cola_aux.encolar(equipo.cola_de_impresion.desencolar()) i +=1 while not cola_aux.esta_vacia(): equipo.cola_de_impresion.encolar(cola_aux.desencolar()) return i
def distancias_ady(grafo, origen, visitados, orden, dicc_dist): q = Cola() q.encolar(origen) visitados[origen] = True while not q.esta_vacia(): v = q.desencolar() ady = list(grafo.adyacentes(v)) for w in ady: if w not in visitados: visitados[w] = True orden[w] = orden[v] + 1 if not orden[w] in dicc_dist: dicc_dist[orden[w]] = 1 else: dicc_dist[orden[w]] += 1 q.encolar(w)
def invertir_Cola(contenedor): obj_Cola = Cola() obj_Pila = Pila() for i in range(0, len(contenedor)): obj_Cola.arribo(contenedor[i]) while(not obj_Cola.cola_vacia()): obj_Pila.apilar(obj_Cola.atencion()) while(not obj_Pila.pila_vacia()): obj_Cola.arribo(obj_Pila.desapilar()) for i in range(0, obj_Cola.tamanio()): contenedor[i] = obj_Cola.atencion() return contenedor
def es_Palindromo(palabra): obj_Cola = Cola() obj_Pila = Pila() letra = None for i in range(0, len(palabra)): letra = palabra[i].lower() obj_Cola.arribo(letra) obj_Pila.apilar(letra) mitad = len(palabra)//2 for i in range(0, mitad): if(obj_Pila.desapilar() != obj_Cola.atencion()): return False return True
def camino_minimo(grafo, origen): visitados = set() distancia = {} padre = {} padre[origen] = None distancia[origen] = 0 q = Cola() q.encolar(origen) visitados.add(origen) while not q.esta_vacia(): v = q.desencolar() for w in grafo.adyacentes(v): if not w in visitados: padre[w] = v distancia[w] = distancia[v] + 1 visitados.add(w) q.encolar(w) return distancia, padre
def sacar_Vocales(palabra): obj_Cola = Cola() nueva_Palabra = '' Volcales = ['a', 'e', 'i', 'o', 'u'] for i in range(0, len(palabra)): obj_Cola.arribo(palabra[i]) for i in range(0, len(palabra)): if (obj_Cola.en_frente() in Volcales): obj_Cola.atencion() else: obj_Cola.mover_final() while(not obj_Cola.cola_vacia()): nueva_Palabra += obj_Cola.atencion() return nueva_Palabra
def bfs(grafo, inicio): if not grafo.vertice_esta(inicio): return None cola = Cola() visitados = set() padres = {} padres[inicio] = None visitados.add(inicio) cola.encolar(inicio) while (not cola.esta_vacia()): vertice = cola.desencolar() for v in grafo.obtener_vecinos(vertice): if v in visitados: continue visitados.add(v) padres[v] = vertice cola.encolar(v) return padres
def bfs(grafo, origen): visitados = set() padres = {} orden = {} padres[origen] = None orden[origen] = 0 visitados.add(origen) q = Cola() # usar deque de collections, NO QUEUE!! q.encolar(origen) while not q.esta_vacia(): v = q.desencolar() for w in grafo.adyacentes(v): # E1 + E2 + E3 + ... + Ev = k E if w not in visitados: padres[w] = v orden[w] = orden[v] + 1 visitados.add(w) q.encolar(w) # O(V + E) return padres, orden
def orden_topologico(grafo): """Solo funciona para grafo dirigido""" resultado = [] cola = Cola() orden = {} for v in grafo.obtener_todos_vertices(): orden[v] = 0 for v in grafo.obtener_todos_vertices(): for w in grafo.adyacentes_vertice(v): orden[w] += 1 for v in grafo.obtener_todos_vertices(): if (orden[v] == 0): cola.encolar(v) while not cola.esta_vacia(): v = cola.desencolar() resultado.append(v) for w in grafo.adyacentes_vertice(v): orden[w] -= 1 if orden[w] == 0: cola.encolar(w) return resultado
def divulgar(grafo, args): origen = args[0] n = int(args[1]) resultado = [] visitados = set() orden = {} orden[origen] = 0 q = Cola() q.encolar(origen) visitados.add(origen) while not q.esta_vacia(): v = q.desencolar() for w in grafo.adyacentes(v): if not w in visitados: orden[w] = orden[v] + 1 if orden[w] > n: print(*resultado, sep=", ") return resultado.append(w) visitados.add(w) q.encolar(w)