Esempio n. 1
0
def RemoveAll(As, value):
    """ Rimuovi tutti gli elementi di 'value' trovato in As """
    if IsEmpty(As):
        return As
    if Head(As) == value:
        return RemoveAll(Tail(As), value)
    return MakeList(Head(As), RemoveAll(Tail(As), value))
Esempio n. 2
0
def RemoveFirst(As, value):
    """ Rimuovi il primo elemento di 'value' trovato in As """
    if IsEmpty(As):
        return As
    if Head(As) == value:
        return Tail(As)
    return MakeList(Head(As), RemoveFirst(Tail(As), value))
Esempio n. 3
0
def Reverse(As):
    """ Restituisci una nuova lista gli elemento di As in ordine inverso """
    def ReverseI(Ls, Rs):
        if IsEmpty(Tail(Ls)):
            return MakeList(Head(Ls), Rs)
        return ReverseI(Tail(Ls), MakeList(Head(Ls), Rs))

    return ReverseI(Tail(As), MakeList(Head(As)))
Esempio n. 4
0
def Filter(P, As):
    """ Restituisci una nuova lista che contiene solo gli elementi di As
		che soddisfano il predicato P() """
    if IsEmpty(As):
        return As
    if P(Head(As)):
        return MakeList(Head(As), Filter(P, Tail(As)))
    return Filter(P, Tail(As))
Esempio n. 5
0
def Scala(As, a):
    """ Restituisci una nuova lista che per ogni elemento di As
		contiene lo stesso valore moltiplicato per 'a' """
    if IsEmpty(As):
        return As
    return MakeList(a * Head(As), Scala(Tail(As), a))
Esempio n. 6
0
def Append(As, Bs):
    """ Aggiungi la lista Bs in coda alla lista As """
    if IsEmpty(As):
        return Bs
    return MakeList(Head(As), Append(Tail(As), Bs))
Esempio n. 7
0
 def MakeI(n):
     if n > b:
         return EmptyList()
     return MakeList(n, MakeI(n + 1))
Esempio n. 8
0
def SplitList(Ls, end, start=0):
    """ Ritorna gli elementi da start a end-1"""
    if start >= end:
        return EmptyList()
    return MakeList(Nth(Ls, start), SplitList(Ls, end, start + 1))
Esempio n. 9
0
 def Concatenate(x, Ls):
     return Append(Ls, MakeList(x))
Esempio n. 10
0
def FoldFilter(P, Ls):
    """ Filter in termini di Fold """
    return Fold(lambda x, y: MakeList(x, y) if P(x) else y, Ls, EmptyList())
Esempio n. 11
0
def FoldMap(F, Ls):
    """ Map in termini di Fold """
    return Fold(lambda x, y: MakeList(F(x), y), Ls, EmptyList())
Esempio n. 12
0
def MakeRandomInts(n, a, b):
    """ Restituisce una lista n di numeri causali, uniformente distribuiti
		nell'intervallo [a,b] (estremi compresi) """
    if n == 0:
        return EmptyList()
    return MakeList(randint(a, b), MakeRandomInts(n - 1, a, b))
Esempio n. 13
0
 def ReverseI(Ls, Rs):
     if IsEmpty(Tail(Ls)):
         return MakeList(Head(Ls), Rs)
     return ReverseI(Tail(Ls), MakeList(Head(Ls), Rs))
Esempio n. 14
0
def Map(F, As):
    """ Restituisci una nuova lista che per ogni elemento di As
		contiene il valore ottenuto applicato F() ad all'elemento """
    if IsEmpty(As):
        return As
    return MakeList(F(Head(As)), Map(F, Tail(As)))
Esempio n. 15
0
def Quadrati(As):
    """ Restituisci una nuova lista che per ogni elemento di As
		contiene lo stesso valore al quadrato """
    if IsEmpty(As):
        return As
    return MakeList(Head(As) * Head(As), Quadrati(Tail(As)))