def parteb2(analyzer, limite, dia1, mes1, año1, dia2, mes2, año2): lista = [] a = 0 'limite=3' fecha1 = datetime.date(año1, mes1, dia1) fecha2 = datetime.date(año2, mes2, dia2) print(fecha1) arbol = rbt.values(analyzer["fechas"], fecha1, fecha2) actual = arbol["first"]["info"]["offenseIndex"]["table"]["elements"] while a < limite: maximo = 0 for element in actual: if element["value"] != None: distancia = element["value"]["lstoffenses"]["first"]["info"][ "trip_miles"] tiempo = element["value"]["lstoffenses"]["first"]["info"][ "fare"] if distancia != "" and tiempo != "": distancia = float(distancia) tiempo = float(tiempo) if tiempo > 0 and distancia > 0: puntaje = float(element["value"]["lstoffenses"] ["first"]["info"]["trip_total"]) if puntaje > maximo and element["value"]["lstoffenses"][ "first"]["info"]["taxi_id"] not in lista: maximo = puntaje mayor = element["value"]["lstoffenses"]["first"][ "info"]["taxi_id"] lista.append(mayor) lista.append(maximo) a += 1 return print( "El top " + str(limite) + " de taxis con más puntos entre las fechas " + str(fecha1) + " y " + str(fecha2) + " ", lista)
def req_5_aux(self, temp_min, temp_max): char_rbt = None if mp.get(self.req_1_rbt, 7): char_rbt = mp.get(self.req_1_rbt, 7)['value'] else: cmpfunc = lambda a, b: req_1_cmpfunc(7, a, b) char_rbt = rbt.newMap(cmpfunc) for music in catalog_iterator(self, 1): rbt.put(char_rbt, music, lt.getElement(music, 12)) mp.put(self.req_1_rbt, 7, char_rbt) rango = rbt.values(char_rbt, temp_min, temp_max) reproducciones = lt.size(rango) return reproducciones
def req_4_aux(self, min_temp, max_temp): char_rbt = None if mp.get(self.req_1_rbt, 22): char_rbt = mp.get(self.req_1_rbt, 22)['value'] else: char_rbt = rbt.newMap(req_4_cmpfunc) for music in catalog_iterator(self, 1): rbt.put(char_rbt, music, lt.getElement(music, 12)) mp.put(self.req_1_rbt, 22, char_rbt) rango = rbt.values(char_rbt, min_temp, max_temp) reproducciones = lt.size(rango) artistas = count_artists_2(rango, reproducciones) return (reproducciones, *artistas)
def req_1(self, characteristic: int, minimo, maximo): char_rbt = None if mp.get(self.req_1_rbt, characteristic): char_rbt = mp.get(self.req_1_rbt, characteristic) else: cmpfunc = lambda a, b: req_1_cmpfunc(characteristic, a, b) char_rbt = rbt.newMap(cmpfunc) for music in catalog_iterator(self, 1): rbt.put(char_rbt, music, lt.getElement(music, 12)) mp.put(self.req_1_rbt, characteristic, char_rbt) rango = rbt.values(char_rbt, minimo, maximo) reproducciones = lt.size(rango) artistas = count_artists(rango, reproducciones) return (reproducciones, artistas)
def values(map, keylo, keyhi): """ Retorna todas los valores del arbol que se encuentren entre [keylo, keyhi] Args: map: La tabla de simbolos keylo: limite inferior keylohi: limite superiorr Returns: Las llaves en el rago especificado Raises: Exception """ if (map['type'] == 'RBT'): return rbt.values(map, keylo, keyhi) else: return bst.values(map, keylo, keyhi)
def req_3(self, inst_min, inst_max, temp_min: float, temp_max: float): char_rbt = None if mp.get(self.req_1_rbt, 21): char_rbt = mp.get(self.req_1_rbt, 21)['value'] else: char_rbt = rbt.newMap(req_3_cmpfunc) for music in catalog_iterator(self, 1): rbt.put(char_rbt, music, [ lt.getElement(music, 14), lt.getElement(music, 1), lt.getElement(music, 7) ]) mp.put(self.req_1_rbt, 21, char_rbt) rango = rbt.values(char_rbt, inst_min, inst_max) itera = ll_it.newIterator(rango) count = 0 res_list = lt.newList() while ll_it.hasNext(itera): tempo = ll_it.next(itera) if tempo[2] >= temp_min and tempo[2] <= temp_max: count += 1 if count <= 5: lt.addLast(res_list, tempo) return count, res_list
def req_2(self, en_min, en_max, dan_min: float, dan_max: float): char_rbt = None if mp.get(self.req_1_rbt, 20): char_rbt = mp.get(self.req_1_rbt, 20)['value'] else: char_rbt = rbt.newMap(req_2_cmpfunc) for music in catalog_iterator(self, 1): rbt.put(char_rbt, music, [ lt.getElement(music, 14), lt.getElement(music, 9), lt.getElement(music, 4) ]) mp.put(self.req_1_rbt, 20, char_rbt) rango = rbt.values(char_rbt, en_min, en_max) itera = ll_it.newIterator(rango) count = 0 res_list = lt.newList() while ll_it.hasNext(itera): danceability = ll_it.next(itera) if danceability[2] >= dan_min and danceability[2] <= dan_max: count += 1 if count <= 5: lt.addLast(res_list, danceability) return count, res_list