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.

Fail _foto_10___6_ter___40__17871_

plm (18850 points)
13 15 118
in HW1 opzionale by (18.9k points)
edited by
Ho un dubbio su questo esercizio specifico, consegnando l'homework mi aspettavo di passare tutti i test come sul mio pc, però mi va in timeout, nonostante abbia un tempo di esecuzione di 800ms sul mio pc abbastanza vecchiotto e 600ms su quello più recente. La mia domanda è: come faccio a migliorare ulteriormente il tempo? Scorro l'immagine una volta sola e faccio solo due controlli per ricavarmi il quadrato, ovvero prendo tutti i segmenti verticali e orizzonati del vertice in alto a sinistra e la stessa cosa per il vertice in basso a destra(ovviamente invertito). Non saprei come fare meglio onestamente, mi sembra proprio il numero minimo di operazioni che io possa fare. L'unica cosa che non capisco è perchè venga conteggiato nell'esercizio il tempo del load, visto che apparentemente influisce non poco in termini di tempo per essere effettuato (Solo per questo esercizio ci mette in media 300 ms e non è ottimizabile).

EDIT: effettivamente non è un problema del load visto che alla fine il test risulterebbe più basso senza contare il load stesso, per cui probabilmente "dovrei prendermela" con la VM che è più lenta di un pc del 2014 :(
729 views
closed

4 Answers

Best answer
a
andreaamici (1740 points)
11 12 21
by (1.7k points)
selected by
Esattamente lo stesso problema mio,sui miei computer li passo tutti i test,poi alla consegna questo test non passa...effettivamente anche io stavo vedendo che il tempo del load influisce e non poco sul tempo finale,sinceramente non so più come renderlo ancora più efficiente
plm (18850 points)
13 15 118
by (18.9k points)
Secondo me non ha senso proprio che il load influisca sul tempo.. è una libreria data dal prof. senza la quale noi non potremmo svolgere l'esercizio.

E' come se chiedessi a Valentino Rossi di farmi il giro veloce al Mugello e contassi il tempo del giro più il tempo che ci ha messo a mettersi la tuta e a scaldare la moto....
edoardottt (8210 points)
1 3 37
by (8.2k points)
Anche io sono d'accordo..ma sarebbe la stessa cosa senza...se il load impiega 300ms e lo si togliesse nel conteggio dei test, i test dovrebbero essere svolti in 700ms e non 1s.
plm (18850 points)
13 15 118
by (18.9k points)
Comunque sul pc io passerei i test in 500ms senza contare il load e comunque non li passa, probabilmente il vero problema è la VM lol
edoardottt (8210 points)
1 3 37
by (8.2k points)

Il tempo impiegato dal load é messo in conto nei test.
QUI e QUI trovi dei consigli utili ;)

plm (18850 points)
13 15 118
by (18.9k points)
Nel senso che se il load ci mette 40 secondi e la mia funzione 1 ms non vengono conteggiati i 40 secondi ?
edoardottt (8210 points)
1 3 37
by (8.2k points)
No. Nel senso che il load sulla VM impiega x. Il tuo algoritmo impiega y. Il timeout del test é 1. Il tuo y deve essere minore di 1 - x. Anche togliendo il load nel conteggio del time-out, si abbasserebbe il tempo di timeout, quindi il tuo y comunque dovrebbe essere minore di 1 - x. Spero di essermi spiegato :)
Lorenzo Cristini (10830 points)
0 0 27
by (10.8k points)
Probabilmente lo hai fatto, ma hai provato a ciclare fino a quando sei sicuro che il pixel verde non avrà abbastanza spazio per essere un vertice di un quadrato di lunghezza lato*k? Questo potrebbe velocizzarti di un pó le cose
J
Jan Rogala (7260 points)
4 4 37
by (7.3k points)
Molte volte non e' il fatto di fare meno operazioni possibili che ti fa andare piu veloce il codice, ma come te le gestisci, per dirti io scorro due volte l'immagine, una volta per trovarmi la griglia e tutti i dati che mi servono(come il primo pixel, la distanza da un pixel verde e un'altro ecc.), e un'altra volta dove mi scorro parte dell'immagine che corrisponde alla griglia. Devi cercare di far fare al tuo codice meno passaggi possibili, ma cio non coincide col fare meno controlli