Пример #1
0
def escribir(unaLista):
    if unaLista == None: return None
    if cola(unaLista) == None:
        print(cabeza(unaLista))
    else:
        print(cabeza(unaLista))
        escribir(cola(unaLista))
Пример #2
0
def filtro(operacion,condicion,unaLista):
    if lista.vacia(unaLista):
        return None
    elif operacion(lista.cabeza(unaLista),condicion):
        return lista.crearLista(lista.cabeza(unaLista),\
                filtro(operacion,condicion,lista.cola(unaLista)))
    else:
        return filtro(operacion,condicion,lista.cola(unaLista))
Пример #3
0
def volverConjunto(unaLista, exitlist=None):
    if cola(unaLista) == None:
        return crearLista(cabeza(unaLista), exitlist)
    else:
        boollista = mapa(lambda x: x == cabeza(unaLista), cola(unaLista))
        if not fold(lambda init, x: init or x, False, boollista):
            return volverConjunto(cola(unaLista),\
                                  crearLista(cabeza(unaLista),exitlist))
        else:
            return volverConjunto(cola(unaLista), exitlist)
Пример #4
0
def union(lista1, lista2):
    if not esConjunto(lista1):
        lista1 = volverConjunto(lista1)
    if not esConjunto(lista2):
        lista2 = volverConjunto(lista2)
    if lista1 == None:
        return lista2
    addList = crearLista(cabeza(lista1), lista2)
    if hayRepetidos(addList):
        return union(cola(lista1), lista2)
    else:
        return union(cola(lista1), crearLista(cabeza(lista1), lista2))
Пример #5
0
def resta(lista1, lista2, exitlist=None):
    if not esConjunto(lista1):
        lista1 = volverConjunto(lista1)
    if not esConjunto(lista2):
        lista2 = volverConjunto(lista2)
    if lista1 == None:
        return exitlist
    addList = crearLista(cabeza(lista1), lista2)
    if hayRepetidos(addList):
        return resta(cola(lista1), lista2, exitlist)
    else:
        return resta(cola(lista1), lista2, crearLista(cabeza(lista1),
                                                      exitlist))
Пример #6
0
def pertenece(x, unaLista):
    if unaLista == None:
        return False
    if x == cabeza(unaLista):
        return True
    else:
        return pertenece(x, cola(unaLista))
Пример #7
0
def fold(operacion,init,unaLista):
    if lista.vacia(lista.cola(unaLista)):
        return operacion(init,lista.cabeza(unaLista))
    return fold(operacion,operacion(init,lista.cabeza(unaLista)),lista.cola(unaLista))
Пример #8
0
def mapa(operacion,unaLista):
    if lista.vacia(lista):
        return None
    return lista.unaLista(operacion(lista.cabeza(unaLista)) , mapa(operacion,lista.cola(unaLista)))
Пример #9
0
def hayRepetidos(unaLista):
    if unaLista == None: return False
    if cola(unaLista) == None: return False
    boollista = mapa(lambda x: x == cabeza(unaLista), cola(unaLista))
    return fold(lambda init,x:init or x, False,boollista) \
        or hayRepetidos(cola(unaLista))