예제 #1
0
def Haversine():
    '''Datos de bases rebeldes proporcionados a un Caza TIE'''
    C, Caux, P = Cola(), Cola(), Pila()
    base = [
        'Base Dantooine', 'Base Eco', 'Cuartel General de la Resistencia',
        'Gran Templo de Massassi', 'Puesto de avanzada Beta'
    ]
    lat = [73, -23, -37, 45, 4]
    lng = [-54, 166, -72, 4, 113]
    q1 = radians(randint(-90, 90))  # latitud de origen
    d1 = radians(randint(-180, 180))  # longitud de origen
    # q2 = latitud de llegada
    # d2 = longitud de llegada
    r = 6371  # en kilometros
    c1, c2, c3 = 0, 0, 0
    for i in range(len(base)):
        arribo(C, [base[i], randint(10, 200), lat[i], lng[i]])
    print('Base | Tamanio de la flota | Latitud | Longitud')
    barrido_cola(C)
    print()
    print('Coordenada actual:', round(q1, 6), ',', round(d1, 6))
    while not cola_vacia(C):
        x = atencion(C)
        q2 = radians(x[2])
        d2 = radians(x[3])
        formula = 2 * r * asin(
            sqrt(
                sin((q1 - q2) / 2)**2 +
                cos(q1) * cos(q2) * sin((d1 - d2) / 2)**2))
        dist = int(formula)
        print(x[0] + ' se encuentra a ' + str(dist) + 'km')
        apilar(P, [dist, x[0], x[1]])
        arribo(Caux, [x[1], x[0], dist])
    print()
    P = ordenar_pila(P)
    c1 = desapilar(P)
    c2 = desapilar(P)
    c3 = desapilar(P)
    print('Las tres bases mas cercanas son:')
    print(c1[1] + ' se encuentra a ' + str(c1[0]) + 'km')
    print(c2[1] + ' se encuentra a ' + str(c2[0]) + 'km')
    print(c3[1] + ' se encuentra a ' + str(c3[0]) + 'km')
    if c1[2] > c2[2] and c1[2] > c3[2]:
        print(c1[1] + ' posee la mayor flota aerea')
    elif c2[2] > c1[2] and c2[2] > c3[2]:
        print(c2[1] + ' posee la mayor flota aerea')
    else:
        print(c3[1] + ' posee la mayor flota aerea')
    print()
    barrido_cola(Caux)
    cont = 0
    while not cola_vacia(Caux):
        dato = atencion(Caux)
        if dato[0] > cont:
            cont = dato[0]
            info = dato
    print()
    print(info[1], 'posee la mayor flota(' + str(info[0]) + ')')
    print('Se encuentra a:', info[2], 'km')
예제 #2
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)
예제 #4
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)
예제 #5
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)
예제 #6
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')
예제 #7
0
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)
예제 #8
0
    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)

for i in range(0, len(bosque), 2):
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)
예제 #10
0
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
print('---ARRIBO---')