예제 #1
0
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