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.

Ottimizzazione es3

1
1841421 (970 points)
3 31 41
in Avvisi by (970 points)
closed by
Salve,

Ho scritto il codice e ho cercato di ottimizzarlo il più possibile ma è comunque lentissimo 30 sec sui test pesanti

In sintesi faccio questo:

Trovo la lunghezza della parola più corta tra quelle disponibili

Inizio un ciclo

 A quel punto prendo una porzione di testo lunga quanto la parola più corta iniziando dall'inizio e vedo se questa porzione è presente nella lista delle parole

se c'è aggiorno il dizionario

      Tolgo quella porzione di testo

se non c'è

       Allungo il numero di caratteri da prendere dal testo(Mi metto alla ricerca di una parola più lunga)->Esco dal ciclo solo quando trova una corrispondenza nella lista delle parole

L'algoritmo termina quella il testo è finito perchè ha trovato tutte le parole.

Ora il punto è che come avete già visto la lunghezza delle parole nei test tosti sono uguali 4 e 11 quindi trova sempre una corrispondenza al primo colpo quindi non mi spiego come mai sia così lento.

Qualche suggerimento?

Grazie in anticipo
398 views
closed with the note: answered

1 Answer

VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
La cosa che rende il tuo codice molto lento è che perdi tempo a modificare il testo togliendo un pezzetto con le slice. Non pensare ad accorcare il testo ma a scorrerlo usando un indice nelle slice che viene totalizzato ogni volta che hai trovato la parola
1
1841421 (970 points)
3 31 41
by (970 points)
Grazie mille davvero.
NON IMMAGINAVO POTESSE FARE TUTTA QUESTA DIFFERENZA NEI TEMPI
h
huertas.jose (640 points)
3 12 17
by (640 points)
Sei riuscito ad andare sotto i 5 secondi alla fine?
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
Con ciò che ho consigliato io supero tutti i test in un secondo netto sul mio computer