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

Do you need help?

Errore timeout sul test da 1 mln di elementi

P
Pierfederici_ (280 points)
3 6 7
in HW2 obbligatorio by (280 points)
Per chi è riuscito a passare tutti i test chiedo quale accorgimento particolare ha avuto per non andare in timeout negli ultimi 2 test. Partendo dal presupposto che con un solo for mi analizzo tutte le liste quindi ho complessità O(n) il mio programma impiega 7 millesimi in più del dovuto D:
381 views

3 Answers

AdSum (16290 points)
9 20 134
by (16.3k points)
Il programma non impiega 7 ms in più, per vedere il tempo effettivo devi calcolarlo o attivando la modalità debug del test.py o con la libreria time.

Inoltre i cicli non sono l'unica cosa che appesantiscono il programma, anche la chiamata di funzioni, assegnazioni e calcoli vari influiscono, ad esempio la mia prima bozza utilizzava 2 o 3 cicli (non ricordo bene) e passava tranquillamente tutti i test. Il mio consiglio è di controllare quali blocchi di istruzioni ti stanno assorbendo la maggior parte del tempo e snellirli il più possibile rimuovendo le parti superflue e/o semplificabili
Romitoskj (8920 points)
5 8 40
by (8.9k points)
Avevo il tuo stesso problema, quello che ho fatto è stato utilizzare il line profiler per trovare l'istruzione più onerosa in termini di tempi d'esecuzione e cercare di sostituirla con istruzioni più semplici. Nel mio caso eliminavo ogni volta la parola giocata dalla lista, che, pur non essendo un operazione  molto dispendiosa, quando veniva svolta molte volte nei test più grandi impiegava molto tempo.

Nota: se il timeout viene superato l'esecuzione viene interrotta, quindi i 7 ms di troppo non sono il tempo effettivo in cui la tua funzione viene completata ma il tempo in cui viene interrotta.
F
Figara93 (560 points)
1 2 7
by (560 points)
dipende da come hai impostato l' algoritmo... potresti provare ad usare qualche variabile(dove possibile) per non dover far eseguire un qualcosa che non è soggetto a modifiche più volte all' interno del tuo codice.