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
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
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
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