def un_transborde(viaje): for linea2 in viaje.ls2: l2 = datos.obtener_linea(linea2) for linea1 in viaje.ls1: l1 = datos.obtener_linea(linea1) for estacion in l2: if estacion[2] != None and linea1 in estacion[2]: viaje.time = tiempo.tiempo(viaje.e1, estacion[0], datos.obtener_linea(linea1)) viaje.time = viaje.time + tiempo.tiempo(viaje.e2, estacion[0], l2) viaje.time = viaje.time + tiempo.tiempo_transborde(estacion[0]) viaje.pasos.append([viaje.time, viaje.e1, linea1, estacion[0], linea2, viaje.e2]) if len(viaje.pasos) >= 1: viaje.time, viaje.pasos = mejores_opciones(viaje.pasos) viaje.pasos = acomodar_opciones(viaje.pasos, 4) return True, viaje return False, viaje
def misma_linea(viaje): for linea in viaje.ls1: if linea in viaje.ls2: l = datos.obtener_linea(linea) viaje.pasos = [viaje.e1, direccion(viaje.e1, viaje.e2, l), viaje.e2] viaje.time = tiempo.tiempo(viaje.e1, viaje.e2, l) return True, viaje return False, viaje
def existe_transborde(linea1, linea2): l2 = datos.obtener_linea(linea2) for estacion in l2: if estacion[2] != None: if linea1 in estacion[2]: return estacion[0] #Checa si existe un transborde entre el punto final y el primer transborde #y revisa si es línea en comun con el punto inicial return None
def dos_transbordes(viaje): lc = [] posibles_transbordes = [] for linea1 in viaje.ls1: l1 = datos.obtener_linea(linea1) for linea2 in viaje.ls2: l2 = datos.obtener_linea(linea2) lc = lineas_comunes(l1, l2) for lineacomun in lc: viaje.time = 0 #Encuentra transborde1 y mide el tiempo entre e1 y transborde1 transb_1 = existe_transborde(linea1, lineacomun) if transb_1 == viaje.e1: continue viaje.time += tiempo.tiempo(viaje.e1, transb_1, l1) viaje.time += tiempo.tiempo_transborde(transb_1) #Encuentra transborde2 y mide el tiempo entre transborde1 y transborde2 transb_2 = existe_transborde(linea2, lineacomun) if transb_2 == transb_1 or transb_2 == viaje.e2: continue viaje.time += tiempo.tiempo(transb_1, transb_2, datos.obtener_linea(lineacomun)) viaje.time += tiempo.tiempo_transborde(transb_2) #Mide el tiempo entre transborde2 y e2 viaje.time += tiempo.tiempo(transb_2, viaje.e2, l2) #Agrega los recorridos a una lista de posibles transbordes viaje.pasos.append([viaje.time, viaje.e1, linea1, transb_1, lineacomun, transb_2, linea2, viaje.e2]) if len(viaje.pasos) >= 1: viaje.time, viaje.pasos = mejores_opciones(viaje.pasos) #Cambia las lineas por las direcciones en el mejor recorrido viaje.pasos = acomodar_opciones(viaje.pasos, 6) return True, viaje return False, viaje
def acomodar_opciones(opciones, n): for opcion in opciones: for i in range(1, n, 2): opcion[i] = direccion(opcion[i-1], opcion[i+1], datos.obtener_linea(opcion[i])) return opciones