Beispiel #1
0
def invertir_pilaa(P):
    C = Cola()
    while not pila_vacia(P):
        arribo(C, desapilar(P))
    while not cola_vacia(C):
        apilar(P, atencion(C))
    barrido_pila(P)
def punto_3():
    pila, nueva_pila = Pila(), Pila()
    estado = ['Dañado', 'Impecable', 'Destruido']
    modelo = ['Mark XLIV', 'Mark XV', 'Mark I', 'Mark V']
    peli = ['Iron Man', 'Iron Man 2', 'Iron Man 3', 'Avengers']
    for i in range(8):
        dato = Traje(choice(modelo), choice(estado), choice(peli))
        apilar(pila, dato)
    print('MODELO | ESTADO | PELICULA')
    barrido_pila(pila)
    print()

    while not pila_vacia(pila):
        aux = desapilar(pila)
        # a
        if aux.modelo == 'Mark XLIV':
            print('El modelo Mark XLIV fue utilizado en', aux.peli)
        # b
        if aux.estado == 'Dañado':
            print(aux.modelo, 'dañado')
        # d
        if aux.peli == 'Avengers':
            print(aux.modelo, 'apareció en avengers')
        # c
        if aux.estado == 'Destruido':
            print('Se elimino', aux.modelo, 'estado:', aux.estado)
        if aux.estado != 'Destruido':
            apilar(nueva_pila, aux)
    print()
    print('Pila sin trajes dañados')
    barrido_pila(nueva_pila)
Beispiel #3
0
def invertir(C):
    P = Pila()
    while not cola_vacia(C):
        apilar(P, atencion(C))
    while not pila_vacia(P):
        arribo(C, desapilar(P))
    print ('pila invertida')
    barrido_cola(C)
Beispiel #4
0
def invertir_cola(C):
    '''Invierte el contenido de una cola con una pila auxiliar'''
    P = Pila()
    while not cola_vacia(C):
        apilar(P, atencion(C))
    while not pila_vacia(P):
        arribo(C, desapilar(P))
    print('Cola invertida')
    barrido_cola(C)
Beispiel #5
0
def palindromo(C):
    P = Pila()
    Caux = Cola()
    while not cola_vacia(C):
        apilar(P, atencion(C))
    while not pila_vacia(P):
        arribo(Caux, desapilar(P))
    barrido_cola(Caux)
    if (Caux == C):
        print ('son palindromo')
    else:
        print('NO es palindromo')
Beispiel #6
0
    barrido_amplitud_red(grafo, ori)
    marcar_no_visitado(grafo)
    print()
    pos += 1

# c
pc = ['Manjaro', 'Parrot', 'Fedora']
pos = 0
for i in range(len(pc)):
    dato = pc[pos]
    pila = dijkstra_red(grafo, dato, 'Impresora')
    fin = 'Impresora'
    peso = None
    print('Camino mas corto desde', dato, 'hasta Impresora')
    print('---ARRIBO---')
    while not pila_vacia(pila):
        dato = desapilar(pila)
        if peso is None and fin == dato[1][0].info.nombre:
            peso = dato[0]
        if fin == dato[1][0].info.nombre:
            print(dato[1][0].info.nombre)
            fin = dato[1][1]
    print('---SALIDA---')
    print('Distancia mas corta:', peso, 'mb')
    print()
    pos += 1

# d
print('Algoritmo de Prim para encontrar el arbol de expansión mínimo')
bosque = prim_red(grafo)
def punto3():
    grafo = Grafo(False)

    # a
    insertar_vertice(grafo, 'Guido Rossum')
    insertar_vertice(grafo, 'Mark Hamill')
    insertar_vertice(grafo, 'Tom Holland')
    insertar_vertice(grafo, 'Robert Downey')
    insertar_vertice(grafo, 'Daisy Ridley')
    insertar_vertice(grafo, 'Pedro Pascal')
    insertar_vertice(grafo, 'Adam Driver')

    # b
    ori = buscar_vertice(grafo, 'Tom Holland')
    des = buscar_vertice(grafo, 'Robert Downey')
    insertar_arista(grafo, randint(10000, 50000), ori, des)
    ori = buscar_vertice(grafo, 'Daisy Ridley')
    des = buscar_vertice(grafo, 'Pedro Pascal')
    insertar_arista(grafo, randint(10000, 50000), ori, des)
    ori = buscar_vertice(grafo, 'Daisy Ridley')
    des = buscar_vertice(grafo, 'Adam Driver')
    insertar_arista(grafo, randint(10000, 50000), ori, des)
    ori = buscar_vertice(grafo, 'Adam Driver')
    des = buscar_vertice(grafo, 'Robert Downey')
    insertar_arista(grafo, randint(10000, 50000), ori, des)
    ori = buscar_vertice(grafo, 'Guido Rossum')
    des = buscar_vertice(grafo, 'Pedro Pascal')
    insertar_arista(grafo, randint(10000, 50000), ori, des)
    ori = buscar_vertice(grafo, 'Mark Hamill')
    des = buscar_vertice(grafo, 'Pedro Pascal')
    insertar_arista(grafo, randint(10000, 50000), ori, des)
    ori = buscar_vertice(grafo, 'Daisy Ridley')
    des = buscar_vertice(grafo, 'Mark Hamill')
    insertar_arista(grafo, randint(10000, 50000), ori, des)
    '''ori = buscar_vertice(grafo, 'Mark Hamill')
    des = buscar_vertice(grafo, 'Guido Rossum')
    insertar_arista(grafo, randint(10000, 50000), ori, des)'''

    barrido_grafo(grafo)
    print()

    # c
    print('Arbol de expresion Minimo')
    bosque = prim(grafo)

    for i in range(0, len(bosque), 2):
        print(bosque[i], '|', bosque[i + 1])
    print()

    # d
    def adyacentes_a(vertice):
        aux = vertice.adyacentes.inicio
        while aux is not None:
            if aux.destino == 'Mark Hamill':
                print('Hay paso entre Guido Rossum y Mark Hamill')
                break
            else:
                print('NO hay paso entre Guido Rossum y Mark Hamill')
            aux = aux.sig

    def adyacentes_b(vertice):
        aux = vertice.adyacentes.inicio
        while aux is not None:
            if aux.destino == 'Robert Downey':
                print('Hay paso directo entre Tom Holland y Robert Downey')
                break
            else:
                print('NO hay paso entre Tom Holland y Robert Downey')
            aux = aux.sig

    ori = buscar_vertice(grafo, 'Guido Rossum')
    if ori is not None:
        adyacentes_a(ori)
    print()

    ori = buscar_vertice(grafo, 'Tom Holland')
    if ori is not None:
        adyacentes_b(ori)
    print()

    ori = buscar_vertice(grafo, 'Tom Holland')
    des = buscar_vertice(grafo, 'Robert Downey')
    if existe_paso(grafo, ori, des):
        print('Existe paso indirecto entre Tom Holland y Robert Downey')
    else:
        print('NO')
    print()

    # e
    vertice = buscar_vertice(grafo, 'Daisy Ridley')
    if vertice is not None:
        print('Amigos de Daisy Ridley')
        adyacentes(vertice)
    print()

    # f
    print(
        'Camino con menor cantidad de me gusta partiendo desde Pedro Pascal hasta Adam Driver.'
    )
    camino_mas_corto = dijkstra(grafo, 'Pedro Pascal', 'Adam Driver')
    fin = 'Adam Driver'
    mg = None
    while not pila_vacia(camino_mas_corto):
        dato = desapilar(camino_mas_corto)
        if mg is None and fin == dato[1][0].info:
            mg = dato[0]
        if fin == dato[1][0].info:
            print(dato[1][0].info)
            fin = dato[1][1]
    print('Cantidad de MG:', mg)
Beispiel #8
0
print('BARRIDO AEROPUERTOS')
print('Nombre | Latitud | Longuitud | Cantidad de pistas')
barrido_grafo(grafo)
print()

# e
print('CAMINOS MAS CORTOS DESDE ARGENTINA A TAILANDIA')
print()

print('i) por menor distancia')
print()
camino_mas_corto = dijkstra_distancia(grafo, 'Argentina', 'Tailandia')
fin = 'Tailandia'
distancia = None
print('---ARRIBO---')
while not pila_vacia(camino_mas_corto):
    dato = desapilar(camino_mas_corto)
    if distancia is None and fin == dato[1][0].info.nombre:
        distancia = dato[0]
    if fin == dato[1][0].info.nombre:
        print(dato[1][0].info.nombre)
        fin = dato[1][1]
print('---SALIDA---')
print('Distancia mas corta: ' + str(distancia) + 'km')
print()

print('ii) por menor duración de tiempo')
print()
camino_mas_corto = dijkstra_duracion(grafo, 'Argentina', 'Tailandia')
fin = 'Tailandia'
duracion = None