def caracteres(C): '''Operaciones con una cola de letras, numeros y simbolos''' C_dig = Cola() C_car = Cola() cont_letras = 0 numer, inter = False, False while not cola_vacia(C): dato = atencion(C) if dato.isdigit(): arribo(C_dig, dato) else: arribo(C_car, dato) # barrido_cola(C_dig) # barrido_cola(C_car) print('Tamanio de la cola de numeros: ' + str(tamanio_cola(C_dig))) print('Tamanio de la cola de caracteres: ' + str(tamanio_cola(C_car))) while not cola_vacia(C_car): dato = atencion(C_car) if dato.isalpha(): cont_letras += 1 if dato == '?': inter = True if dato == '#': numer = True print('Cantidad de letras en la cola de caracteres: ' + str(cont_letras)) if inter: print('Existen signos de interrogacion en la cola') else: print('NO existen signos de interrogacion en la cola') if numer: print('Existen numerales en la cola') else: print('NO existen numerales en la cola')
def dos_colas(): '''Combina dos colas en una ordenada''' C1 = Cola() C2 = Cola() dato1 = [0, 2, 4, 6, 8] dato2 = [1, 3, 5, 7, 9] for i in range(0, len(dato1)): arribo(C1, dato1[i]) arribo(C2, dato2[i]) print('Cola 1') barrido_cola(C1) print('Cola 2') barrido_cola(C2) print() for i in range(0, tamanio_cola(C1)): if en_frente(C1) < en_frente(C2): mover_final(C1) else: while en_frente(C1) > en_frente(C2): arribo(C1, atencion(C2)) mover_final(C1) while not cola_vacia(C2): arribo(C1, atencion(C2)) print('Cola combinada y ordenada') barrido_cola(C1)
def i_esimo_cola(C): '''Elimina un i-esimo elemento despues de frente de la cola''' Caux = Cola() pos = 5 if tamanio_cola(C) > pos: i = 0 while i < pos: x = atencion(C) arribo(Caux, x) i += 1 elim = atencion(C) print('elemento eliminado:', elim) while not cola_vacia(C): arribo(Caux, atencion(C)) print('Nueva cola') barrido_cola(Caux) else: print('Se excedio la cantidad de posiciones')
def numeros_ordenados(): C = Cola() Caux = Cola() numeros1 = [0, 5, 9, 11] numeros2 = [2, 6, 10, 14] for i in range(0, len(numeros1)): arribo(C, numeros1[i]) arribo(Caux, numeros2[i]) for i in range(0, tamanio_cola(C)): if (en_frente(C) < en_frente(Caux)): mover_final(C) else: while (en_frente(C) > en_frente(Caux)): arribo(C, atencion(Caux)) mover_final(C) while not cola_vacia(Caux): arribo(C, atencion(Caux)) print('Termino') barrido_cola(C)
def palindromo(): '''Devuelve True si una palabra es un palindromo''' P = Pila() C = Cola() cad = 'neuquen' palindr = True print(cad) for letra in cad: apilar(P, letra) arribo(C, letra) for i in range(0, tamanio_cola(C)): dato_cola = atencion(C) dato_pila = desapilar(P) if dato_cola != dato_pila: palindr = False if palindr: print(True) else: print(False)
def ordenada(C): Caux = Cola() for i in range (tamanio_cola(C))
def turnos(): '''Cola de turnos en un consultorio''' Corig, Caux, C1, C2 = Cola(), Cola(), Cola(), Cola() letr = ['A', 'B', 'C', 'D', 'E', 'F'] for i in range(1000): # zfill() agrega ceros a la izquierda arribo(Corig, [choice(letr), randint(000, 999)]) barrido_cola(Corig) while not cola_vacia(Corig): dato = atencion(Corig) if dato[0] == 'A' or dato[0] == 'C' or dato[0] == 'F': arribo(C1, dato) if dato[0] == 'B' or dato[0] == 'D' or dato[0] == 'E': arribo(C2, dato) arribo(Caux, dato) print('Cantidad turnos A, C o F: ' + str(tamanio_cola(C1))) print('Cantidad turnos B, D o E: ' + str(tamanio_cola(C2))) if tamanio_cola(C1) > tamanio_cola(C2): print('La cola 1 tiene mayor cantidad de turnos') elif tamanio_cola(C2) > tamanio_cola(C1): print('La cola 2 tiene mayor cantidad de turnos') else: print('Son iguales') print('') A, C, F = 0, 0, 0 B, D, E = 0, 0, 0 while not cola_vacia(C1): dato1 = atencion(C1) if dato1[0] == 'A': A += 1 if dato1[0] == 'C': C += 1 if dato1[0] == 'F': F += 1 while not cola_vacia(C2): dato2 = atencion(C2) if dato2[0] == 'B': B += 1 if dato2[0] == 'D': D += 1 if dato2[0] == 'E': E += 1 print('La cola 1 contiene:') print('A: ' + str(A) + ', C: ' + str(C) + ', F: ' + str(F)) print('La cola 2 contiene:') print('B: ' + str(B) + ', D: ' + str(D) + ', E: ' + str(E)) print('') if A > C and A > F: print('En cola 1, mayoria de letras A') elif C > A and C > F: print('En cola 1, mayoria de letras C') else: print('En cola 1, mayoria de letras F') if B > D and B > E: print('En cola 2, mayoria de letras B') elif D > B and D > E: print('En cola 2, mayoria de letras D') else: print('En cola 2, mayoria de letras E') print('') cont = 0 while not cola_vacia(Caux): dato = atencion(Caux) if dato[1] <= 506: # print(dato) cont += 1 print('Cantidad de turnos con numero menor a 506: ' + str(cont))