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

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

problemi velocità nel trovare il periodo

1965335 (1080 points)
2 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
503 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)
2 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)
2 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.