def estacionesCriticas(dataBase) -> dict:
    top3In = list.newList()
    top3Out = list.newList()
    bot3 = list.newList()

    analysis = Analysis.topViajes(dataBase)

    i = 0
    while i < 3:
        list.addLast(top3In, list.removeFirst(analysis[0]))
        list.addLast(top3Out, list.removeFirst(analysis[1]))
        list.addFirst(bot3, list.removeLast(analysis[2]))
        i += 1
    del analysis

    return (top3In, top3Out, bot3)
Exemplo n.º 2
0
def sortVideos(catalog, size, country, category_name):
    catalog2 = lt.newList(catalog["videos"]["type"],
                          catalog["videos"]["cmpfunction"])
    idcategoria = sacaridcategoria(catalog, category_name)
    if catalog["videos"]["type"] == "ARRAY_LIST":
        for x in catalog["videos"]["elements"]:
            if (x["category_id"] == idcategoria) and (x["country"] == country):
                lt.addFirst(catalog2, x)
    if catalog2["size"] < size:
        print("Excede el tamaño de la lista, ingrese un valor válido")
    else:
        sub_list = catalog2.copy()
        start_time = time.process_time()
        sorted_list = ms.sort(sub_list, cmpVideosByViews)
        stop_time = time.process_time()
        elapsed_time_mseg = (stop_time - start_time) * 1000
        return elapsed_time_mseg, sorted_list
Exemplo n.º 3
0
def videos_a_dias_trending(videos):
    nodiccionario = lt.newList("ARRAY_LIST")
    listaids = []
    for x in videos["elements"]:
        if not x["video_id"] == "#NAME?":
            if not x["video_id"] in listaids:
                listaids.append(x["video_id"])
                lt.addFirst(nodiccionario, {
                    "id": x["video_id"],
                    "apariciones": 1
                })
            else:
                for y in nodiccionario["elements"]:
                    if y["id"] == x["video_id"]:
                        y["apariciones"] += 1
    diccionariosorteado = ms.sort(nodiccionario, cmpVideosByAppearances)
    return diccionariosorteado
Exemplo n.º 4
0
def addInterconnection(analyzer,connection):
    if not mp.contains(analyzer['interconnections'], connection['origin']):
        lista=lt.newList('ARRAY_LIST')
        lt.addLast(lista,1)
        lt.addLast(lista,connection['cable_id'])
        mp.put(analyzer['interconnections'],connection['origin'],lista)
    elif mp.contains(analyzer['interconnections'], connection['origin']):
        entry=mp.get(analyzer['interconnections'],connection['origin'])
        lista=me.getValue(entry)
        esta=False
        for i in lt.iterator(lista):
            if i==connection['cable_id']:
                esta=True
        if not esta:
            numero=lt.removeFirst(lista)
            numero+=1
            lt.addFirst(lista,numero)
Exemplo n.º 5
0
def requerimientoB(analyzer, FechaI, FechaF, FechaO):
    ListaR = op.keys(analyzer["MapaId"], FechaI, FechaF)
    ListaU = op.keys(analyzer["MapaId"], FechaO, FechaO)
    if lt.isEmpty(ListaR) == True:
        OrdenadaR = False
    else:
        PuntosR = Rango(ListaR, analyzer, False)
        OrdenadaR = DiciaLista(PuntosR)
    if lt.isEmpty(ListaU) == True:
        OrdenadaU = False
    else:
        PuntosU = Rango(ListaU, analyzer, FechaO)
        OrdenadaU = DiciaLista(PuntosU)
    ListaFinal = lt.newList("ARRAY_LIST")
    lt.addFirst(ListaFinal, OrdenadaU)
    lt.addLast(ListaFinal, OrdenadaR)
    return ListaFinal
def cargar_generos(catalogo, genre, pelicula, promedio, vote):
    mapa = catalogo["genres"]
    mapa2 = catalogo["genres_vote"]
    pareja = mp.get(mapa, genre)
    pareja2 = mp.get(mapa2, genre)
    if pareja == None:
        #print("Nuevo director",director,pelicula)
        lista = lt.newList(datastructure="SINGLE_LINKED")
        lt.addFirst(lista, (pelicula, promedio))
        mp.put(mapa, genre, lista)

    else:

        lt.addLast(pareja["value"], (pelicula, promedio))
    if pareja2 == None:
        mp.put(mapa2, genre, float(vote))
    else:
        pareja2["value"] += float(vote)
Exemplo n.º 7
0
def orden_companias(lst, cantidad_companias):
    dict_companias = {}
    iterator = it.newIterator(lst)
    lista_resultado = lt.newList('SINGLE_LINKED', None)
    while it.hasNext(iterator):
        taxi = it.next(iterator)
        if taxi['company'] not in dict_companias:
            dict_companias[taxi['company']] = 1
        else:
            dict_companias[taxi['company']] += 1
    lst_companies = lt.newList(datastructure='SINGLE_LINKED', cmpfunction=None)
    lt.addFirst(lst_companies, dict_companias.values())
    sh.shellSort(lst_companies, cmp_values)
    contador = 1
    while contador <= cantidad_companias:
        lt.addFirst(lista_resultado, lt.getElement(lst_companies, contador))
        contador += 1
    return lista_resultado
Exemplo n.º 8
0
def push(stack, element):
    """ Agrega el elemento element en el tope de la pila.

    Args:
        stack:  La pila donde se insetará el elemento
        element:  El elemento a insertar

    Returns:
        La pila modificada

    Raises:
        Exception
    """
    try:
        lt.addFirst(stack, element)
        return stack
    except Exception as exp:
        error.reraise(exp, 'TADStack->Push: ')
Exemplo n.º 9
0
def add_lat_lo(citibike, trip):
    mapa = citibike["mapa_lat_lon"]

    estacion_inicio = trip["start station id"]
    latitud_inicio = trip["start station latitude"]
    longitud_inicio = trip["start station longitude"]
    llave = latitud_inicio + "," + longitud_inicio

    estacion_final = trip["end station id"]
    latitud_final = trip["end station latitude"]
    longitud_final = trip["end station longitude"]
    llavev2 = latitud_final + "," + longitud_final

    existe = m.get(mapa, "todos")

    if existe is None:
        lista_owo = lt.newList("ARRAY_LIST")
        a_ver = []
        if llave not in a_ver:
            a_ver.append(llave)
        if llavev2 not in a_ver:
            a_ver.append(llavev2)

        lt.addLast(lista_owo, a_ver)
        for i in a_ver:
            lt.addLast(lista_owo, i)
        m.put(mapa, "todos", lista_owo)
    else:
        existe = me.getValue(existe)
        lista = lt.getElement(existe, 1)
        lt.removeFirst(existe)
        no_estan = []
        if llave not in lista:
            lista.append(llave)
            no_estan.append(llave)
        if llavev2 not in lista:
            lista.append(llavev2)
            no_estan.append(llavev2)

        lt.addFirst(existe, lista)
        for i in no_estan:
            lt.addLast(existe, i)
    EXadd_lat_lon(mapa, llave, estacion_inicio)
    EXadd_lat_lon(mapa, llavev2, estacion_final)
Exemplo n.º 10
0
def landing_principales(analyzer):
    vertices = gr.vertices(analyzer['connections'])
    max=0
    lista=lt.newList('ARRAYLIST')
    
    for i in range(lt.size(vertices)):
        vertice=lt.getElement(vertices,i)
        grado=gr.degree(analyzer['connections'],vertice)
        
        if grado == max:
            lt.addLast(lista,vertice)

        if grado > max:
            max=grado
            lista=lt.newList('ARRAYLIST')
            lt.addFirst(lista,vertice)
    vermax=lt.getElement(lista,0)
 
    return vermax[0], max
Exemplo n.º 11
0
def updateTimeIndex(severityEntry:dict, accident:dict,accidentDate: datetime, )->None:
    """
    Actualiza las entradas del indice Time.
        parametros:
            severityEntry(OrderedMap): Contiene un TimeIndex
            accident(dict): Contiene la informacion acerca del accidente

    """
    id = accident['ID']
    accidentTime = blockTime(accidentDate.time())

    entryExist = om.contains(severityEntry,accidentTime)
    if entryExist:
        timeEntry = om.get(severityEntry, accidentTime)
        timeEntry = me.getValue(timeEntry)
    else:
        timeEntry = newIDList()
        om.put(severityEntry,accidentTime,timeEntry)
    
    lt.addFirst(timeEntry['idList'],id)
    timeEntry['size'] += 1
Exemplo n.º 12
0
def addCategoryAndCountry(catalog, video):
    """
    Para el req 1, en un mapa añade llaves que son la union de una categoria y un pais y como valor guarda una lista de videos
    """
    existsCategoryAndCountry = mp.contains(
        catalog['categoriesAndCountries'],
        (video['category_id'] + video['country'].lower().strip()))

    if existsCategoryAndCountry:
        existing = mp.get(
            catalog['categoriesAndCountries'],
            (video['category_id'] + video['country'].lower().strip()))
        existingList = me.getValue(existing)
        lt.addLast(existingList, video)

    else:
        lists = lt.newList('ARRAY_LIST')
        lt.addFirst(lists, video)
        mp.put(catalog['categoriesAndCountries'],
               (video['category_id'] + video['country'].lower().strip()),
               lists)
def topViajes(dataBase) -> tuple:
    stations = dataBase['station']
    topIn = list.newList()
    topOut = list.newList()
    topTrips = list.newList()
    keys = map.keySet(stations)
    keys = listiterator.newIterator(keys)
    while listiterator.hasNext(keys):
        key = listiterator.next(keys)
        station = map.get(stations, key)
        station = mapentry.getValue(station)
        list.addFirst(topIn, {
            'station': station['name'],
            'value': station['tripsIn']
        })
        list.addFirst(topOut, {
            'station': station['name'],
            'value': station['tripsOut']
        })
        list.addFirst(topTrips, {
            'station': station['name'],
            'value': station['trips']
        })
    mergesort.mergesort(topIn, Comparation.tripsVal)
    mergesort.mergesort(topOut, Comparation.tripsVal)
    mergesort.mergesort(topTrips, Comparation.tripsVal)

    return (topIn, topOut, topTrips)
def sort_sublist(catalog, numlen, category, country, tag, indicator):

    lista_trabajo = lt.newList('SINGLE_LINKED')

    if indicator == 1:
        function = cmpVideosByViews
        for i in lt.iterator(catalog['videos']):
            if i['country'] == country and int(i['category_id']) == category:
                lt.addFirst(lista_trabajo, i)

    else:
        function = cmpVideosByLikes
        for i in lt.iterator(catalog['videos']):
            if i['country'] == country and (tag in i['tags']):
                lt.addFirst(lista_trabajo, i)

    sorted_list = mg.sort(lista_trabajo, function)
    try:
        resultado = lt.subList(sorted_list, 1, numlen)
    except:
        resultado = 'No existen tantos videos, intente con un número más pequeño...'
    return resultado
Exemplo n.º 15
0
def addMovieByActor(catalog, actorName, movie):
    actors = catalog['actors']
    existactor = mp.contains(actors, actorName)
    actor = None
    if existactor:
        entry = mp.get(actors, actorName)
        actor = me.getValue(entry)
    else:
        actor = {
            'name': actorName,
            'movies': lt.newList('ARRAY_LIST', compareActorsByName),
            'directors': lt.newList('ARRAY_LIST', compareDirectorsByName),
            'votes': 0.0,
            'vote_average': 0.0,
            'vote_count': 0
        }
        mp.put(actors, actorName, actor)
    kv1 = mp.get(catalog['moviesIds'], movie['id'])
    movie1 = me.getValue(kv1)
    lt.addLast(actor['movies'], movie1)
    movieavg = me.getValue(kv1)['vote_average']
    moviecount = me.getValue(kv1)['vote_count']
    actor['votes'] += float(movieavg)
    actor['vote_average'] = actor['votes'] / float(actor['movies']['size'])
    actor['vote_count'] += int(moviecount)
    director = actor['directors']
    namedic = movie['director_name']
    if director['size'] == 0 or director == None:
        lt.addFirst(director, {'name': namedic, 'veces': 1})
    else:
        if existe(director, 'name', namedic):
            for i in range(director['size']):
                element = lt.getElement(director, i)
                if (element['name'] == namedic):
                    element['veces'] += 1
                    break

        else:
            lt.addLast(director, {'name': namedic, 'veces': 1})
Exemplo n.º 16
0
def addLanding(analyzer,line):
    a=lt.isEmpty(analyzer['list'])
    if a==True:
        origin=line['\ufefforigin']
        cable_id=line['cable_id']
        lableo=origin+"-"+cable_id
        addPoint(analyzer, lableo)

        length=line['cable_length']
        if length!='n.a.':
            length=length.strip(" km").replace(",", "")
            length=float(length)
        else:
            length=0.1
        lt.addFirst(analyzer['list'], (lableo,length))
        #mp.put(analyzer['names'], line['name'], lableo)

    else:
        #origin=line['\ufefforigin']
        cable_id=line['cable_id']
        last=lt.getElement(analyzer['list'], lt.size(analyzer['list']))
        lableo=last[0]
        lengthl=last[1]
        destination=line['\ufefforigin']
        labled=destination+"-"+cable_id
        length=line['cable_length']

        if length!='n.a.':
            length=length.strip(" km").replace(",", "")
            length=float(length)
        else:
            length=0
        #addPoint(analyzer,lableo)
        addPoint(analyzer,labled)
        addLine(analyzer,lengthl,lableo,labled)
        lt.addLast(analyzer['list'], (labled,length))
Exemplo n.º 17
0
def createCategoryMap(catalog, idList):

    iterator = slit.newIterator(idList)

    while slit.hasNext(iterator):

        video = slit.next(iterator)
        """
        Categorizacion por categorias
        """
        existingCategory = mp.contains(catalog['CategoriesById'],
                                       video['category_id'])

        if existingCategory:
            existsCategory = mp.get(catalog['CategoriesById'],
                                    video['category_id'])
            categoryList = me.getValue(existsCategory)
            lt.addLast(categoryList, video)

        else:
            newCategoryList = lt.newList('ARRAY_LIST')
            lt.addFirst(newCategoryList, video)
            mp.put(catalog['CategoriesById'], video['category_id'],
                   newCategoryList)
Exemplo n.º 18
0
 def req_3(self, category: str):
     repeticiones = mp.newMap(numelements=20000)
     for video in category_iterator(self, category):
         video_id = lt.getElement(video[0], 1)
         video_pair = mp.get(repeticiones, video_id)
         if video_pair:
             mp.put(repeticiones, video_id,
                    (video, video_pair['value'][1] + 1))
         else:
             mp.put(repeticiones, video_id, (video, 1))
     videos_ids = mp.valueSet(repeticiones)
     id_iter = lliterator.newIterator(videos_ids)
     maximo = 0
     max_vid = 0
     while lliterator.hasNext(id_iter):
         video = lliterator.next(id_iter)
         video_rep = video[1]
         if video_rep > maximo:
             maximo = video_rep
             max_vid = video[0]
     res = lt.newList()
     res_vid = mp.get(repeticiones, video_id)['value']
     lt.addFirst(res, res_vid[0])
     return (res, res_vid[1])
Exemplo n.º 19
0
def estacionesCriticas(analyzer):

    cuenta= 0
    estaciones= gr.vertices(analyzer["graph"])
    listaEntrada= lt.newList("ARRAY_LIST", comparestations)
    listaSalida= lt.newList("ARRAY_LIST", comparestations)
    listaSolitarias= lt.newList("ARRAY_LIST", comparestations)
    entradasConcurridas= lt.newList("ARRAY_LIST", compareSizes)
    salidasConcurridas= lt.newList("ARRAY_LIST", compareSizes)
    estacionesSolitarias= lt.newList("ARRAY_LIST", compareSizes)
    while cuenta<lt.size(estaciones):
        estacion= lt.getElement(estaciones, cuenta)
        entrada= gr.indegree(analyzer["graph"], estacion)        
        lt.addFirst(entradasConcurridas,entrada)
        salida= gr.outdegree(analyzer["graph"], estacion)
        lt.addFirst(salidasConcurridas,salida)
        bidireccional= gr.degree(analyzer["graph"], estacion)
        lt.addFirst(estacionesSolitarias,bidireccional)
        cuenta+= 1

    entradasOrg= sel.selectionSort(entradasConcurridas,lessequal)
    salidasOrg= sel.selectionSort(salidasConcurridas,lessequal)
    solitariasOrg= sel.selectionSort(estacionesSolitarias,lessequal)

    for conteo in range(0,3):
        if entrada == lt.getElement(entradasOrg, conteo):
            lt.insertElement(listaEntrada, estacion, conteo)
        if salida == lt.getElement(salidasOrg, conteo):
            lt.insertElement(listaSalida, estacion, conteo)
        if bidireccional == lt.getElement(solitariasOrg, conteo):
            lt.insertElement(listaSolitarias, estacion, conteo)
    if lt.size(listaEntrada) > 3:
        lt.removeLast(listaEntrada)
    if lt.size(listaSalida) > 3:
        lt.removeLast(listaSalida)
    if lt.size(listaSolitarias) > 3:
        lt.removeLast(listaSolitarias)

    return (listaEntrada, listaSalida, listaSolitarias)
Exemplo n.º 20
0
def addMap(analyzer, trip):
    if trip["trip_total"] != "" and trip["trip_miles"] != "" and float(
            trip["trip_total"]) > 0 and float(trip["trip_miles"]) > 0:
        llave = trip["trip_start_timestamp"]
        llave = str(llave[0:10])
        valor1 = trip["taxi_id"]
        valor2 = float(trip["trip_total"])
        valor3 = float(trip["trip_miles"])
        Lista = lt.newList("ARRAY_LIST")
        if op.contains(analyzer["MapaId"], llave[0:10]) == True:
            Valor = op.get(analyzer["MapaId"], llave[0:10])
            Valor = Valor["value"]
            Lista3 = lt.newList("ARRAY_LIST")
            lt.addFirst(Lista3, valor1)
            lt.addLast(Lista3, valor2)
            lt.addLast(Lista3, valor3)
            lt.addLast(Valor, Lista3)
        else:
            Lista2 = lt.newList("ARRAY_LIST")
            lt.addFirst(Lista2, valor1)
            lt.addLast(Lista2, valor2)
            lt.addLast(Lista2, valor3)
            lt.addFirst(Lista, Lista2)
            op.put(analyzer["MapaId"], llave[0:10], Lista)
def req5(cont, miniH, miniM, miniS, maxH, maxM, maxS, sentiment, user, cat2):
    sentimen = cf.data_dir + sentiment
    input_file3 = csv.DictReader(open(sentimen, encoding="utf-8"),
                                 delimiter=",")
    user = cf.data_dir + user  #
    input_file2 = csv.DictReader(open(user, encoding="utf-8"), delimiter=",")
    lst = lt.newList()
    for hashtag in input_file2:
        lt.addLast(lst, hashtag)
    new = it.newIterator(lst)  # Ponerlo en controller
    sss = lt.newList()  #
    for senti in input_file3:
        lt.addLast(sss, senti)
    itet = it.newIterator(
        sss
    )  # Ponerlo en otro controllorer junto con el sentimen y el input_file3 csv.DictReader()
    filtrada1 = total(cont, miniH, miniM, miniS, maxH, maxM, maxS)
    newsaw = it.newIterator(filtrada1)
    while it.hasNext(newsaw):
        l = it.next(newsaw)
        #cantidad2+=lt.size(l)
        #print(cantidad2) #Reproducciones
        nuevo = it.newIterator(l)
        while it.hasNext(nuevo):
            pedazo = it.next(
                nuevo)  #Mira cada track cumplido con el primer filtro
            #ax=mp.get(pedazo,'hashtag')
            ex = mp.get(pedazo, 'tempo')
            ix = mp.get(pedazo, 'horas')
            ox = mp.get(pedazo, 'track_id')
            ux = mp.get(pedazo, 'user_id')
            ax = mp.get(pedazo, 'artist_id')
            #tax=me.getValue(ax)
            tex = me.getValue(ex)
            tix = me.getValue(ix)
            tox = me.getValue(ox)
            tux = me.getValue(ux)
            tax = me.getValue(ax)
            cantidad = 0
            vader_avg = 0
            while it.hasNext(new):
                hashtag = it.next(
                    new
                )  #Buscar el hashtag aqui y su valor vader tambien #Mira cada hashtag
                if hashtag['track_id'] == tox:
                    hasht = hashtag['hashtag'].lower(
                    )  #Se busca los que sean iguales al track_id (todos los hashtag del track_id respectivo)
                    while it.hasNext(itet):
                        senti = it.next(
                            itet
                        )  #Se busca basicamente que tenga un valor_vader
                        if senti['hashtag'].lower() == hasht:
                            if senti['vader_avg'] != '' and senti[
                                    'vader_avg'] != None:
                                vader_avg += float(senti['vader_avg'])
                                cantidad += 1
                            break
                    itet = it.newIterator(sss)
            new = it.newIterator(lst)
            nuevodic = {}
            nuevodic['tempo'] = int(tex)
            nuevodic['horas'] = tix
            nuevodic['track_id'] = tox
            nuevodic['artist_id'] = tax
            nuevodic['cantidad'] = cantidad
            nuevodic['user_id'] = tux
            if nuevodic['cantidad'] != 0:
                vader_avg = vader_avg / cantidad
                nuevodic['vader_avg'] = vader_avg
                model.addTrack(cat2, nuevodic)
    generos = lt.newList()
    lista = [
        'POP', 'REGGAE', 'DOWN-TEMPO', 'CHILL-OUT', 'HIP-HOP', 'JAZZ AND FUNK',
        'R&B', 'ROCK', 'METAL'
    ]
    #return generos
    for gen in lista:
        lt.addLast(generos, gen)
    fua = it.newIterator(generos)
    top = 0
    nombretop = ""
    listatop = None
    cantidadT = 0
    resp1 = lt.newList()
    while it.hasNext(fua):
        genero = it.next(fua)
        if genero == "POP":
            minimo = 100.0
            maximo = 130.0
        elif genero == 'REGGAE':
            minimo = 60.0
            maximo = 90.0
        elif genero == 'DOWN-TEMPO':  ###
            minimo = 70.0
            maximo = 100.0
        elif genero == 'CHILL-OUT':  #
            minimo = 90.0
            maximo = 120.0
        elif genero == 'HIP-HOP':  #
            minimo = 85.0
            maximo = 115.0
        elif genero == 'JAZZ AND FUNK':
            minimo = 120.0
            maximo = 125.0
        elif genero == 'R&B':
            minimo = 60.0
            maximo = 80.0
        elif genero == "ROCK":
            minimo = 110.0
            maximo = 140.0
        else:
            minimo = 100.0
            maximo = 160.0
        pra = req4('tempo', minimo, maximo, cat2)
        artistas = pra[0][0]
        reproducciones = pra[0][1]
        lista = pra[0][2]
        cantidadT += reproducciones
        if top < reproducciones:
            top = reproducciones
            nombretop = genero
            listatop = lista
        x = 1
        cantidad = lt.size(lista)
        lt.addLast(
            resp1, {
                "genero": genero,
                "artista": artistas,
                "reproducciones": reproducciones,
                'minimo': minimo,
                'maximo': maximo
            })
    newisi = it.newIterator(listatop)
    lst = lt.newList("SINGLE_LINKED")
    paaa = lt.newList("SINGLE_LINKED")
    while it.hasNext(newisi):
        pedazo = it.next(
            newisi
        )  #Esto devuelve un mapa de la lista iterando (mapa de la lista(cada elemento))
        nex = mp.get(
            pedazo, 'track_id'
        )  #Devuelve la llave danceability y el valor respectivo del mapa en forma de diccionario
        tax = me.getValue(
            ax
        )  #Devuelve el valor de danceability del track sacado en el mapa de it.next(video)
        fex = me.getValue(nex)
        if lt.isPresent(lst, fex) == 0:
            lt.addLast(paaa, pedazo)
            lt.addLast(lst, fex)
    totalu = lt.size(paaa)
    x = 1
    vistos = lt.newList()
    n = 1
    resp2 = lt.newList("SINGLE_LINKED")
    while n <= 10:
        rand = random.randint(1, totalu)  #
        track = lt.getElement(
            paaa, rand)  #Lo mismo que it.next(de un iterador de lista)
        id = me.getValue(mp.get(track, 'track_id'))
        hashte = me.getValue(mp.get(track, 'cantidad'))
        vader = me.getValue(mp.get(track, 'vader_avg'))
        if lt.isPresent(vistos, id) == 0:
            lt.addFirst(
                resp2, {
                    "0": str(x) + ':' + str(id),
                    "hashte": hashte,
                    "vader_avg": vader_avg
                })
            lt.addLast(vistos, id)
            x += 1
        n += 1
    return [resp1, cantidadT, genero, totalu, resp2]
Exemplo n.º 22
0
def añadir(lst, element):
    lt.addFirst(lst, element)
Exemplo n.º 23
0
def suicidenmeLaSecuela(catalog, countries):

    mapa_pais = catalog["paises"]
    mapa_landing = catalog["landing_points"]
    mapa_cables = catalog["cables"]
    grafo = catalog["connections"]

    for country in countries:

        pais = country["CountryName"]
        capital = country["CapitalName"]

        if country["CapitalLatitude"] != "":
            capitalPos = (float(country["CapitalLatitude"]),
                          float(country["CapitalLongitude"]))

        if mp.contains(mapa_pais, pais):

            lt.addFirst(mp.get(mapa_pais, pais)["value"], capital)
            gr.insertVertex(grafo, capital)

            landing_points = lt.getElement(mp.get(mapa_pais, pais)["value"], 2)
            bwMenor = 10000000000000000000000000000000000000

            for landing_point in lt.iterator(landing_points):

                bw = mp.get(mapa_cables, landing_point)["value"]

                if bw < bwMenor:

                    bwMenor = bw

                cables = mp.keySet(
                    mp.get(mapa_landing, landing_point)["value"][1])
                pos = mp.get(mapa_landing, landing_point)["value"][0]

                for cable in lt.iterator(cables):

                    destino = landing_point + "|" + cable
                    costo = hs.haversine(capitalPos, pos)

                    gr.addEdge(grafo, capital, destino, costo)

            mp.put(mapa_cables, capital, bwMenor)

        elif pais != "":

            mp.put(mapa_pais, pais, lt.newList(datastructure="SINGLE_LINKED"))
            lt.addFirst(mp.get(mapa_pais, pais)["value"], capital)
            gr.insertVertex(grafo, capital)

            llaves = mp.keySet(mapa_landing)
            distanciaMin = 1000000000000000000000000000000000000000000000000
            landing_point = None

            for llave in lt.iterator(llaves):

                pos = mp.get(mapa_landing, llave)["value"][0]
                costo = hs.haversine(capitalPos, pos)

                if costo < distanciaMin:

                    distanciaMin = costo
                    landing_point = llave

            cables = mp.keySet(mp.get(mapa_landing, landing_point)["value"][1])
            bw = mp.get(mapa_cables, landing_point)["value"]

            for cable in lt.iterator(cables):

                destino = landing_point + "|" + cable

                gr.addEdge(grafo, capital, destino, distanciaMin)

            mp.put(mapa_cables, capital, bw)
Exemplo n.º 24
0
def addListAccident(lst, accident):
    lt.addFirst(lst, accident)
Exemplo n.º 25
0
def Rango(ListaR, analyzer, especifica):
    IdTaxis = m.newMap(numelements=37,
                       maptype="CHAINING",
                       loadfactor=0.4,
                       comparefunction=comparecompany)
    if especifica == False:
        for i in range(1, lt.size(ListaR) + 1):
            llave = lt.getElement(ListaR, i)
            valor = op.get(analyzer["MapaId"], llave)
            valor = valor["value"]
            for j in range(1, lt.size(valor) + 1):
                Dato = lt.getElement(valor, j)
                TaxiId = lt.getElement(Dato, 1)
                Precio = float(lt.getElement(Dato, 2))
                Millas = float(lt.getElement(Dato, 3))
                if m.contains(IdTaxis, TaxiId) == True:
                    Lista4 = lt.newList("ARRAY_LIST")
                    viaje = m.get(IdTaxis, TaxiId)
                    viaje = viaje["value"]
                    Dato1 = float(lt.getElement(viaje, 1))
                    Dato2 = float(lt.getElement(viaje, 2))
                    Dato3 = float(lt.getElement(viaje, 3))
                    PrecioTotal = Precio + Dato1
                    MillasTotal = Millas + Dato2
                    TotalViajes = Dato3 + 1
                    lt.addFirst(Lista4, PrecioTotal)
                    lt.addLast(Lista4, MillasTotal)
                    lt.addLast(Lista4, TotalViajes)
                    m.put(IdTaxis, TaxiId, Lista4)
                else:
                    Lista5 = lt.newList("ARRAY_LIST")
                    ViajesTotal = 1
                    lt.addFirst(Lista5, Precio)
                    lt.addLast(Lista5, Millas)
                    lt.addLast(Lista5, ViajesTotal)
                    m.put(IdTaxis, TaxiId, Lista5)
    else:
        valor = op.get(analyzer["MapaId"], especifica)
        valor = valor["value"]
        for j in range(1, lt.size(valor) + 1):
            Dato = lt.getElement(valor, j)
            TaxiId = lt.getElement(Dato, 1)
            Precio = float(lt.getElement(Dato, 2))
            Millas = float(lt.getElement(Dato, 3))
            if m.contains(IdTaxis, TaxiId) == True:
                Lista4 = lt.newList("ARRAY_LIST")
                viaje = m.get(IdTaxis, TaxiId)
                viaje = viaje["value"]
                Dato1 = float(lt.getElement(viaje, 1))
                Dato2 = float(lt.getElement(viaje, 2))
                Dato3 = float(lt.getElement(viaje, 3))
                PrecioTotal = Precio + Dato1
                MillasTotal = Millas + Dato2
                TotalViajes = Dato3 + 1
                lt.addFirst(Lista4, PrecioTotal)
                lt.addLast(Lista4, MillasTotal)
                lt.addLast(Lista4, TotalViajes)
                m.put(IdTaxis, TaxiId, Lista4)
            else:
                Lista5 = lt.newList("ARRAY_LIST")
                ViajesTotal = 1
                lt.addFirst(Lista5, Precio)
                lt.addLast(Lista5, Millas)
                lt.addLast(Lista5, ViajesTotal)
                m.put(IdTaxis, TaxiId, Lista5)

    ListaLlaves = m.keySet(IdTaxis)
    for k in range(1, lt.size(ListaLlaves) + 1):
        Llave1 = lt.getElement(ListaLlaves, k)
        Cambio = m.get(IdTaxis, Llave1)
        Cambio = Cambio["value"]
        ActualizacionPrecio = float(lt.getElement(Cambio, 1))
        if ActualizacionPrecio == 0:
            ActualizacionPrecio = 1
        ActualizacionMillas = float(lt.getElement(Cambio, 2))
        ActualizacionViajes = float(lt.getElement(Cambio, 3))
        Puntos = (ActualizacionMillas /
                  ActualizacionPrecio) * ActualizacionViajes
        m.put(IdTaxis, Llave1, Puntos)
    return IdTaxis