示例#1
0
def contains(map, key, comparefunction):
    """
    Retorna True si la llave key se encuentra en la tabla de hash o False en caso contrario.  
    Es necesario proveer la función de comparación entre llaves. 
    """
    hash = hashValue(map, key)
    bucket = lt.getElement(map['table'], hash)
    pos = lt.isPresent(bucket, key, comparefunction)
    if pos > 0:
        return True
    else:
        return False
示例#2
0
def get(map, key, comparefunction):
    """
    Retorna la pareja llave, valor, cuya llave sea igual a key.
    Es necesario proveer una función de comparación para las llaves.
    Si la llave no esta presente se retorna None
    """
    hash = hashValue(map, key)
    bucket = lt.getElement(map['table'], hash)
    pos = lt.isPresent(bucket, key, comparefunction)
    if pos > 0:
        return lt.getElement(bucket, pos)
    else:
        return None
示例#3
0
def remove(map, key, comparefunction):
    """
    Elimina la pareja llave,valor, donde llave == key.
    Es necesario proveer la función de comparación entre llaves 
    """
    hash = hashValue(map, key)
    bucket = lt.getElement(map['table'], hash)
    pos = lt.isPresent(bucket, key, comparefunction)
    if pos > 0:
        lt.deleteElement(bucket, pos)
        map['size'] -= 1
    else:
        return None
def req4(criteria, lstCast, lstMov):
    """
    Retorna la cantidad de elementos que cumplen con un criterio para una columna dada
    """
    # Guardar los id de las peliculas del actor
    idMov = lt.newList("ARRAY_LIST", compFunc)
    # Guardar el nombre del director y el numero de las colaboraciones
    myDirectorDic = {}

    for i in range(lt.size(lstCast)):
        director = lt.getElement(lstCast, i)
        if criteria == director['actor1_name'] or criteria == director['actor2_name'] or criteria == director['actor3_name'] or criteria == director['actor4_name'] or criteria == director['actor5_name']:
            lt.addLast(idMov, director['id'])
            dir_name = director['director_name']
            # revisa si la llave existe
            if dir_name in myDirectorDic:
                myDirectorDic[dir_name] = int(myDirectorDic[dir_name]) + 1
            else:
                myDirectorDic[dir_name] = 1

    pelicula = lt.newList("ARRAY_LIST", compFunc)
    numPel = 0
    calProm = 0.0

    for i in range(lt.size(lstMov)):
        id = lt.getElement(lstMov, i)['id']
        if lt.isPresent(idMov, id) > 0:
            lt.addLast(pelicula, lt.getElement(lstMov, i)['title'])
            numPel += 1
            calProm += float(lt.getElement(lstMov, i)['vote_average'])

        if numPel == lt.size(idMov):
            break

    prom = 0.0

    if numPel != 0:
        prom = calProm / numPel

    # Busca el director con mayores colaboraciones
    actual = 0
    name = ""
    for k, v in myDirectorDic.items():
        if actual < int(v):
            actual = int(v)
            name = str(k)

    res = "Para el actor " + str(criteria) + "\nEl director con el cual más a trabajado es: " + str(
        name) + "\nSu peliculas tienen un calficación promedio de: " + str(prom) + "\nEl numero de peliculas del actor es: " + str(numPel) + "\n"
    return pelicula, res
示例#5
0
def edges(graph):
    """
    Retorna una lista con todos los arcos del grafo graph
    """
    lstmap = map.valueSet(graph['vertices'])
    lstresp = lt.newList()
    itervertex = it.newIterator(lstmap)
    while it.hasNext(itervertex):
        lstedge = it.next(itervertex)
        iteredge = it.newIterator(lstedge)
        while (it.hasNext(iteredge)):
            edge = it.next(iteredge)
            if not (lt.isPresent(lstresp, edge, e.compareedges)):
                lt.addLast(lstresp, edge)
    return lstresp
示例#6
0
def put(map, key, value, comparefunction):
    """
    Ingresa una pareja llave,valor a la tabla de hash.  Si la llave ya existe en la tabla, se reemplaza el valor.
    Es necesario proveer una función de comparación para las llaves.
    """
    hash = hashValue(map, key)
    bucket = lt.getElement(
        map['table'], hash
    )  #Se obtiene la lista de elementos en la posicion  hash de la tabla
    entry = me.newMapEntry(key, value)
    pos = lt.isPresent(bucket, key, comparefunction)
    if pos > 0:  #La pareja ya exista, se reemplaza el valor con la nueva información
        lt.changeInfo(bucket, pos, entry)
    else:
        lt.addLast(bucket,
                   entry)  #La llave no existia, se crea una nueva entrada
        map['size'] += 1
 def test_isPresent(self):
     """
        Con muchos elementos en la lista
     """
     self.lst = slt.newList('SINGLE_LINKED_LIST')
     slt.addFirst(self.lst, self.book1)
     slt.addFirst(self.lst, self.book2)
     slt.addFirst(self.lst, self.book3)
     slt.addFirst(self.lst, self.book4)
     slt.addFirst(self.lst, self.book5)
     book = {'book_id': '1', 'book_title': 'Title 1', 'author': 'author 1'}
     self.assertEqual(slt.size(self.lst), 5)
     present = slt.isPresent(self.lst, book, self.comparebooks)
     if present > 0:
         print('el libro esta presente')
     else:
         print('El libro no esta presente')
示例#8
0
def isPresent(lst, element):
    """ Informa si el elemento element esta presente en la lista. 
    
    Informa si un elemento está en la lista.  Si esta presente, retorna la posición en la que se encuentra 
    o cero (0) si no esta presente. Se utiliza la función de comparación utilizada durante la creación 
    de la lista para comparar los elementos.

    Args:
        lst: La lista a examinar
        element: El elemento a buscar
    Returns:     
        
    Raises:
        Exception
    """
    try:
        return lt.isPresent(lst, element)
    except Exception as exp:
        error.reraise(exp, 'TADList->isPresent: ')
def req3(criteria, lstCast, lstMov):
    """
    Retorna la cantidad de elementos que cumplen con un criterio para una columna dada
    """
    # Guardar los id de las peliculas del director
    idMov = lt.newList("ARRAY_LIST", compFunc)

    for i in range(lt.size(lstCast)):
        director = lt.getElement(lstCast, i)
        if criteria == director['director_name']:
            lt.addLast(idMov, director['id'])

    pelicula = lt.newList("ARRAY_LIST", compFunc)
    numPel = 0
    calProm = 0.0

    for i in range(lt.size(lstMov)):
        id = lt.getElement(lstMov, i)['id']
        # Revisamos si el id de la pelicula actual está en el id de peliculas de nuestro director
        if lt.isPresent(idMov, id) > 0:
            lt.addLast(pelicula, lt.getElement(lstMov, i)['title'])
            numPel += 1
            calProm += float(lt.getElement(lstMov, i)['vote_average'])

        if numPel == lt.size(idMov):
            break

    prom = 0.0

    if numPel != 0:
        prom = calProm/numPel

    res = "El director " + str(criteria) + " posee un total de: " + str(numPel) + \
        " peliculas, las cuales tienen una calificación promedio de: " + \
        str(prom) + "\n"
    return pelicula, res
示例#10
0
def isPresent(lst, element, comparefunction):
    """
    Informa si el elemento element esta presente en la lista. Si esta presente retorna 
    la posición en la que se encuentra o cero (0) si no esta presente
    """
    return lt.isPresent(lst, element, comparefunction)