Programie ,który w liście wyszukuje wszystkie podciągi Python 2.7.10

0

Witam Mam w poniedziałek egzamin i chciałem się do niego przygotować , ale póki co to utknąłem na programie ,który w liście L wyszukuje wszystkie podciągi od liczbie elementów
większej lub równej od 2:
● stałe, np: [1,1,1,1,1,1,1], [0,0,0]
● rosnące, np: [1,2,3,4,54]
● malejące, np: [10,9,6,4,2,1,100]
● *niemalejące, np: [1,2,3,4], [1,2,2,2,2,23,456]
● *nierosnące, np: [300,299,280,280,280,1,12,12]
● * monotoniczne , np: [1,2,3,3,3,3,4,5,6,6,7,8], [90,34,33,32,32,32,2,2,1,12]
Jako wynik działania programu powinniśmy dostać SŁOWNIK o nazwie dseq , który będzietrzymał jako klucze powyższe nazwy typów ciągów, a jako wartości owe ciągi
(podciągiciągu będącego listą L).
///////////////////////////////////////
L=[1,1,1,2,4,-2]
T=[]
for j in range(len(L)):
T.append(0)
for i in range(len(L)-1):
if(L[i]==L[i+1]):
if(i==0):
T[i]=[L[i],T[i].append(L[i+1])]
else:
T[i]=[T[i-1],T[i].append(L[i+1])]

print "i=",i
print "T=",T

///////////////////////////////////////////////
Jak na razie udało mi się zrobić tylko tyle i nie mam w sumie jakoś pomysłu na to będę wdzięczny za każdą pomoc.

0

Mało precyzyjny opis.
Czy szukane podciągi mają być maksymalne? L = [1,2,3], czy podciąg [1,2] ma się znaleźć wśród podciągów rosnących?
Czy szukane podciągi mają być spójne? L = [1,0,3], czy podciąg [1,3] ma się znaleźć wśród podciągów rosnących?

0

Wygląda, że tylko spójne, ale niekoniecznie maksymalne.

0

Może coś takiego

L = [1, 1, 1, 12, 13, 14, 21, -12, -13, 12, 12, 100, -100]
def decreasing(l):
    for i in range(0,len(l) - 1):
        if(l[i+1] > l[i]):
            return False
    return True
def strictly_decreasing(l):
    for i in range(0, len(l) - 1):
        if(l[i+1] >= l[i]):
            return False
    return True

dseq = {"nierosnacy":[],"niemalejacy":[],"staly":[],"mono":[],"rosnacy":[],"malejacy":[]}    
for begin in range(0,len(L) + 1):
    for end in range(begin + 2,len(L) + 1):
        subsequence = L[begin:end]
        if decreasing(subsequence):
            dseq["nierosnacy"].append(subsequence)
        if strictly_decreasing(subsequence):
            dseq["malejacy"].append(subsequence)            
print(dseq)

http://ideone.com/fWzQRS

Zauważ też, że
ciąg jest stały <==> jest jednocześnie niemalejący i nierosnący,
ciąg jest monotoniczny <==> gdy jest niemalejący lub nierosnący. Wystarczy zatem dopisać dwie funkcje: increasing i strictly_increasing.

1 użytkowników online, w tym zalogowanych: 0, gości: 1