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.

HW2 - ES3 - Tempi di esecuzione eccezionali!!!

Auron (15880 points)
50 126 194
in Es3 by (15.9k points)
Ciao a tutti,
ho appena concluso il 3° esercizio dell'HW con un tempo che giudicavo molto molto basso... Sono andato a vedere la classifica e non ho potuto fare a meno di notare che ci sono colleghi che superano tutti i test in circa 0.2s, circa un terzo del mio tempo... Come diavolo fate? Io ho una sola riga di codice che accresce vertiginosamente il mio tempo (da sola prende circa 250ms su mp3.txt), non saprei proprio dove migliorare...
Che malefiche strategie avete adottato? Condividereste qualcuno dei vostri oscuri segreti con Noi, 'sti giovenotti de' 'sta Roma bella?
892 views
closed

2 Answers

Best answer
Xriuk (13590 points)
6 24 116
by (13.6k points)
edited by

Eh, se magari ci dici come hai proceduto tu possiamo darti qualche spunto...

Io ti dico che ho utilizzato subito un dizionario: diz[x] = y, molto veloce. E tu mi dirai, ma nel caso in cui a una x corrispondano più di una y?
Eheh, se guardi i grafici, per il primo robottino ti basta la y più piccola, mentre per quello di sotto quella più grande, così approssimi il grafico a quello strettamente necessario, dato che i punti non possono essere sul bordo.

Auron (15880 points)
50 126 194
by (15.9k points)
Quindi, per esempio, se il mio Dizionario è: {(1,1), (1,6), (1,8), (2,1), (2,3), (6,3), (6,5)} renderlo qualcosa del tipo: {1:[1,6,8], 2:[1,3], 6:[3,5]}?
Dove ovviamente la chiave è la x e il valore la lista delle y correlate a quella x?
_andrea_ (45670 points)
11 42 297
by (45.7k points)
Una cosa del genere, ma con un solo valore, non lista di valori
Xriuk (13590 points)
6 24 116
by (13.6k points)

@Auron, se ho capito tu hai un dizionario di tuple (per ogni robottino?) con tutti i punti? Io ti dico che ho utilizzato subito un dizionario: diz[x] = y, molto veloce. E tu mi dirai, ma nel caso in cui a una x corrispondano più di una y?
Eheh, se guardi i grafici, per il primo robottino ti basta la y più piccola, mentre per quello di sotto quella più grande, così approssimi il grafico a quello strettamente necessario, dato che i punti non possono essere sul bordo.

Questa è una chicca personale ;)

_andrea_ (45670 points)
11 42 297
by (45.7k points)
Dovevi lasciare che ci arrivasse da solo
Auron (15880 points)
50 126 194
by (15.9k points)
@Xriuk Non esattamente, io ho un dizionario di tuple, con i soli vertici della parte di figura che interessa il percorso di ogni robottino...
Esempio... Il mio percorso è [2,2,-2], partendo da (1,1) io avrò {(1,1), (1,5), (3,5)} e non {(1,1),  (1,3), (1,5), (3,5)}...
Comunque ho capito la tua "chicca", appena ho un minuto per poter incollare le dita alla tastiera faccio qualche tentativo :)
Grazie mille per il supporto, che vada bene o male ahahah
BA per te :D
_andrea_ (45670 points)
11 42 297
by (45.7k points)
che metodo usi tu e quanto ci metti in totale?
Auron (15880 points)
50 126 194
by (15.9k points)
Tutti i test, qui sulla VM, impiegano circa 550/560ms di media... Per il procedimento, ho risposto a Xriuk sotto :)
_andrea_ (45670 points)
11 42 297
by (45.7k points)
Vabbè dai 500 non sono mica tanti. Non bastano per il bonus? O sei tu che punti proprio al top?
Auron (15880 points)
50 126 194
by (15.9k points)
Io per natura punto al Top ahahah
Poi c'è il discorso Bonus che sicuramente pesa, visto che è l'unico dei 6 che non riuscirei a prendere di questo Hw...
Però ero anche curioso di sapere come era stato progettato l'algoritmo per renderlo ancora più veloce (so che 500 non è tanto :P).
Tu che tempo avevi?
_andrea_ (45670 points)
11 42 297
by (45.7k points)
Io faccio meno di 400ms
Auron (15880 points)
50 126 194
by (15.9k points)
Beh, ottimo :D