Do you need any help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2021-22 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 2021-22 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.

VIDEOLEZIONI DEL CORSO DI FONDAMENTI DI PROGRAMMAZIONE AA20-21

PROGRAMMING COURSE VIDEOCONFERENCES AY20-21

Errore timeout sul test da 1 mln di elementi

P
Pierfederici_ (280 points)
3 6 7
asked Oct 30, 2020 in HW2 obbligatorio by Pierfederici_ (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:
179 views

3 Answers

AdSum (16290 points)
9 20 134
answered Oct 30, 2020 by AdSum (16,290 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)
4 8 40
answered Oct 30, 2020 by Romitoskj (8,920 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
answered Oct 31, 2020 by Figara93 (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.