Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

problemi velocità nel trovare il periodo

1965335 (1080 points)
1 2 8
in HW4 obbligatorio by (1.1k points)
ho trovato un modo per calcolare il periodo ma è estremamente lento perchè uso 3 for annidati uno per scorrere i casi base,uno per trovare le varie sottosequenze e un altro per traformare le sottosequnze come la prima tramite un dizionario cosi passo solo 11 test,mi sapreste consigliare un metodo più veloce? ho provato a levare un for usando l'operazione con modulo per compararle ma quando confronto 0%0 ovviamente mi da errore
494 views
closed

2 Answers

Best answer
Alessio Natalucci (3660 points)
7 10 23
by (3.7k points)
selected by
Ciao! Il periodo sembra difficile da ricavare (l'ho pensato anch'io) ma è molto piu semplice di quanto sembri. Sapendo che il periodo deve essere maggiore o uguale a 3, con un solo ciclo (basta e avanza) arriva a confrontare gli elementi nella lista divisi in gruppi di lunghezza pari al periodo. La variabile con il periodo la fai partire =3, se il ciclo for dopo aver confrontato gli elementi divisi non trova un riscontro aumenti il periodo di 1 fino a quando non ricavi un valore che ti permetta ti suddividere in gruppi uguali i vari elementi. A parole è difficile ma ci si riesce tranquillamente, spero di esserti stato d'aiuto
1965335 (1080 points)
1 2 8
by (1.1k points)
si ma come faccio a confrontare gli elementi ,c'è un metodo per vedere se le due liste hanno la stessa struttura?
Alessio Natalucci (3660 points)
7 10 23
by (3.7k points)
Una lista la puoi scorrere (e confrontare) anche con gli indici!

Ad esempio

Lista1 = [1,2,3,4,5]

Lista2 = [4,7,8,1,2,3]

Possiamo dire che:

Lista1[0:2] == lista2[3:5]
1965335 (1080 points)
1 2 8
by (1.1k points)
si ok ma questo per i numeri uguali , se io ho

l1=[0,1,1,2,0]

l2=[3,4,4,5,3]

le liste sono equivalenti ma non posso fare l1==l2 perchè mi darebbe falso ,il confronto su cosa lo dovrei fare?
Alessio Natalucci (3660 points)
7 10 23
by (3.7k points)
è vero che il periodo lo devi trovare rispetto alla prosodia, ma se noti c'è una correlazione tra prosodia e e la lista delle ES!
l
luca.ronca (600 points)
0 0 5
by (600 points)
Ti conviene ragionare su cosa "lega" due sequenze in corrispondenza biunivoca (oltre a tutte le condizioni che probbabilmente stai strutturando tramite i sottocicli for), così far passare questa condizione a porzioni sempre più grandi di modulo finché non ne trovi uno che la soddisfa.