예제 #1
0
def requerimiento3(catalog, menor1, mayor1, menor2, mayor2):
    """
    Devuelve el total de canciones únicas y un mapa con 5 canciones
    aleatorias que cumplen con dos rangos de características 
    """
    # Mapa donde se guardan las canciones que cumplen con el rango
    # de tempo, el valor es una tupla con el instrumentalness y el
    # energy de la canción
    mapa_tempo = om.newMap('BST')

    # Lista de listas de eventos que cumplen con el rango de tempo
    lista_rango = om.values(catalog['tempo'], menor2, mayor2)

    for lista_instrumentalness in lt.iterator(lista_rango):
        for e in lt.iterator(lista_instrumentalness):
            om.put(mapa_tempo, e['track_id'],
                   (e['instrumentalness'], e['tempo']))

    # Lista de las canciones que cumplen con el tempo
    canciones = om.keySet(mapa_tempo)

    # Se recorre la lista de canciones que cumple con tempo y
    # se revisa cuáles de esas no cumplen con el rango de
    # instrumentalness y se eliminan del mapa
    for cancion in lt.iterator(canciones):
        instrumental = (me.getValue(om.get(mapa_tempo, cancion)))[0]
        tempo = (me.getValue(om.get(mapa_tempo, cancion)))[1]
        if not (instrumental <= mayor1 and instrumental >= menor1):
            om.remove(mapa_tempo, cancion)

    # Se obtiene el tamaño del mapa
    tamaño = om.size(mapa_tempo)

    # Se crea un mapa para guardar las 5 llaves aleatorias y sus valores
    mapa_aleatorias = om.newMap('RBT')

    # Se obtiene una lista con cinco números aleatorios no repetidos
    # que estén dentro del rango del tamaño
    lista_cinco_aleatorios = random.sample(range(tamaño), 5)

    for i in lista_cinco_aleatorios:
        llave_aleatoria = om.select(mapa_tempo, i)
        valor = me.getValue(om.get(mapa_tempo, llave_aleatoria))
        om.put(mapa_aleatorias, llave_aleatoria, valor)

    return tamaño, mapa_aleatorias
def RankingServicios(analyzer, topN):

    # print(taxisPorCompania)
    RankingFinal = lt.newList(datastructure='SINGLE_LINKED', cmpfunction=None)
    rangoRanking = 0

    serviciosPorCompania = ServiciosPorCompania(analyzer)
    while rangoRanking < topN:
        if serviciosPorCompania is not None:
            MayorValor = om.maxKey(serviciosPorCompania)
            nombre_compania = om.get(serviciosPorCompania, MayorValor)
            lt.addLast(RankingFinal, nombre_compania)
            if om.contains(serviciosPorCompania, MayorValor):
                om.remove(serviciosPorCompania, MayorValor)
                rangoRanking += 1

    return RankingFinal
예제 #3
0
def requerimiento2(catalog, menor1, mayor1, menor2, mayor2):
    """
    Devuelve el total de canciones únicas y un mapa con 5 canciones
    aleatorias que cumplen con dos rangos de características 
    """
    # Mapa donde se guardan las canciones que cumplen con el rango
    # de danceability, el valor es una tupla con el energy y el
    # danceability de la canción
    mapa_dance = om.newMap('BST')

    # Lista de listas de eventos que cumplen con el rango de danceability
    lista_rango = om.values(catalog['danceability'], menor2, mayor2)

    for lista_energy in lt.iterator(lista_rango):
        for e in lt.iterator(lista_energy):
            om.put(mapa_dance, e['track_id'], (e['energy'], e['danceability']))

    # Lista de las canciones que cumplen con el danceability
    canciones = om.keySet(mapa_dance)

    # Se recorre la lista de canciones que cumple con danceability y
    # se revisa cuáles de esas no cumplen con el rango de energy y
    # se eliminan del mapa
    for cancion in lt.iterator(canciones):
        energy = (me.getValue(om.get(mapa_dance, cancion)))[0]
        dance = (me.getValue(om.get(mapa_dance, cancion)))[1]
        if not (energy <= mayor1 and energy >= menor1):
            om.remove(mapa_dance, cancion)

    # Se obtiene el tamaño del mapa
    tamaño = om.size(mapa_dance)

    # Se crea un mapa para guardar las llaves aleatorias y sus valores
    mapa_aleatorias = om.newMap('RBT')

    # Se obtiene una lista con cinco números aleatorios no repetidos
    # que estén dentro del rango del tamaño
    lista_cinco_aleatorios = random.sample(range(tamaño), 5)

    for i in lista_cinco_aleatorios:
        llave_aleatoria = om.select(mapa_dance, i)
        valor = me.getValue(om.get(mapa_dance, llave_aleatoria))
        om.put(mapa_aleatorias, llave_aleatoria, valor)

    return tamaño, mapa_aleatorias
예제 #4
0
def failImpact(analyzer, landingPoint):
    delta_time = -1.0
    delta_memory = -1.0

    tracemalloc.start()
    start_time = getTime()
    start_memory = getMemory()

    landingPoint = landingPoint.replace(' ', '').lower()

    answer = model.failImpact(analyzer, landingPoint)

    result = answer[1]

    countries = []

    while om.size(result) > 0:
        distance = om.maxKey(result)
        countriesList = me.getValue(om.get(result, om.maxKey(result)))

        for country in lt.iterator(countriesList):
            countries.append({'country': country, 'distance': distance})

        om.remove(result, distance)

        # country = me.getValue(om.get(result, om.maxKey(result)))
        # countries.append({'country': country, 'distance': om.maxKey(result)})
        # om.deleteMax(result)

    stop_memory = getMemory()
    stop_time = getTime()
    tracemalloc.stop()

    delta_time = stop_time - start_time
    delta_memory = deltaMemory(start_memory, stop_memory)

    return analyzer, answer[0], countries, delta_time, delta_memory
def test_remove(tree):
    tree = om.put(tree, 21, 'book21')
    tree = om.put(tree, 7, 'book7')
    tree = om.put(tree, 30, 'book30')
    tree = om.put(tree, 5, 'book5')
    tree = om.put(tree, 4, 'book4')
    tree = om.put(tree, 3, 'book3')
    tree = om.put(tree, 20, 'book20')
    tree = om.put(tree, 25, 'book25')
    tree = om.put(tree, 35, 'book35')
    tree = om.put(tree, 29, 'book29')
    tree = om.put(tree, 11, 'book11')
    tree = om.put(tree, 15, 'book15')
    tree = om.remove(tree, 21)
    tree = om.put(tree, 10, 'book10')
    tree = om.put(tree, 10, 'book10A')
    assert om.contains(tree, 29) is True
    assert om.contains(tree, 28) is False
    assert om.minKey(tree) == 3
    assert om.maxKey(tree) == 35
    om.deleteMin(tree)
    assert om.contains(tree, 3) is False
예제 #6
0
def test_remove(tree):
    tree = om.put(tree, 23, 'book21')
    tree = om.put(tree, 7, 'book7')
    tree = om.put(tree, 30, 'book30')
    tree = om.put(tree, 5, 'book5')
    tree = om.put(tree, 4, 'book4')
    tree = om.put(tree, 3, 'book3')
    tree = om.put(tree, 20, 'book20')
    tree = om.put(tree, 25, 'book25')
    tree = om.put(tree, 35, 'book35')
    tree = om.put(tree, 29, 'book29')
    tree = om.put(tree, 11, 'book11')
    tree = om.put(tree, 15, 'book15')
    tree = om.put(tree, 10, 'book10')
    tree = om.put(tree, 37, 'book11')
    tree = om.put(tree, 40, 'book15')
    tree = om.put(tree, 45, 'book10')
    assert om.size(tree) == 16
    assert om.contains(tree, 11) is True
    tree = om.remove(tree, 11)
    assert om.size(tree) == 15
    assert om.contains(tree, 11) is False