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

Do you need help?

HW2: Ma se non ricevo consigli per migliorare?

n
n.rossi (650 points)
3 4 9
in HW2 obbligatorio by (650 points)
Non sto ricevendo feedback utili per migliorare il mio algoritmo, in questo caso non credo posso migliorarlo e a me un test fallisce per 0.64 millesimi di secondo come faccio?
790 views

4 Answers

AndreaGasparini (18850 points)
7 12 120
by (18.9k points)
edited by

Ti lascio la risposta che avevo dato ad un altro ragazzo che pensava di aver già implementato la soluzione più efficiente ma che comunque non superava l'esempio5:

Se effettivamente stai utilizzando uno degli approcci "migliori" per risolvere il problema ma comunque ti va in Timeout l'esempio5 ragiona sul fatto che dipende tutto dal numero di scambi che effettui durante un sorpasso in quanto ne vengono effettuati 1.125.000 circa.

Io per esempio dopo un po' che pensavo di aver trovato la soluzione migliore ma che comunque mi andava in timeout su quel test, ho realizzato che due degli scambi che facevo potevano benissimo essere riscritti come uno scambio solo e quindi impiegare la metà del tempo.

Ti consiglio comunque di dare anche un'occhiata a questi post in cui si è già affrontato l'argomento:

- Velocizzare Algoritmo

- Miglioramento delle tempistiche

- Aiuto con l'Hw2obb

n
n.rossi (650 points)
3 4 9
by (650 points)
Già avevo visto questa risposta, ma gli scambi che faccio sono quelli assenziali
AndreaGasparini (18850 points)
7 12 120
by (18.9k points)
Quanti e quali scambi effettui quando avviene un sorpasso? Comunque prova a dare anche una descrizione a grandi linee della soluzione che hai implementato, così sarà più facile capire come aiutarti.
n
n.rossi (650 points)
3 4 9
by (650 points)
edited by
Ho un dizionario dove la chiave è il pilota e il valore è pilota precedente e successivo, se effettuo il sorpasso vado a modificare il pilota in questione il suo precedente e il suo successivo
AndreaGasparini (18850 points)
7 12 120
by (18.9k points)
Se ad ogni pilota associ una lista che contiene pilota successivo e pilota precedente e quando devi effettuare un sorpasso scambi prima i successivi e poi i precedenti il problema è proprio qui, in realtà ti basterebbe scambiare la lista del pilota in questione con quella del suo predecessore e gli scambi vengono dimezzati, con un netto guadagno di efficienza sul test da 1.125.000 sorpassi.
n
n.rossi (650 points)
3 4 9
by (650 points)
Si ha alla fine è un dizionario con chiave il pilota e valore precedente e successore tipo così:

1 : (2,4)
AndreaGasparini (18850 points)
7 12 120
by (18.9k points)
Quando effettui un sorpasso scambi l'intera lista associata al pilota 1 con quella del suo precedente o prima scambi i successivi e poi i precedenti?
Christian (15220 points)
3 4 77
by (15.2k points)
Ciao, stavo aspettando domani ed in caso avrei aperto il tuo stesso thread.

Per ora io non ho ricevuto consigli (ho consegnato ieri le mie tre valutazioni) e mi chiedevo come funzionasse nel caso nessuno dei miei peer consegnasse entro la scadenza i feedback relativi al mio algoritmo. Qualcuno ha idee?
s
simone (25820 points)
47 97 209
by (25.8k points)
Che cosa vuoi sapere di preciso?
Christian (15220 points)
3 4 77
by (15.2k points)
Può succedere che io alla fine del PA non riceva consigli per il mio algoritmo?
s
simone (25820 points)
47 97 209
by (25.8k points)
Certo. Il forum prova a stimolare la partecipazione che rimane pur sempre non obbligatoria.

Se vi sentite svantaggiati rispetto ai vostri colleghi, provate a pensare a queste 3 cose:

1) Non è detto che i feedback ricevuti vi possano aiutare a risolvere particolari problemi (ex: test che falliscono per millesimi di secondo).

2) Avete accesso agli pseudocodici di altri studenti che potrebbero aiutarvi a trovare la soluzione.

3) Potete in ogni caso continuare a lavorare sul vostro algoritmo e riconsegnare dopo il PA.
Christian (15220 points)
3 4 77
by (15.2k points)
Perfetto, grazie mille per la risposta :)
plm (18850 points)
13 15 118
by (18.9k points)
Oltre a fare domande sul forum o cercare dei post riguardanti determinitati argomenti che potrebbero tornarti utili, non puoi fare più di tanto. Di certo non puoi prendere chi non dà feedback e obbligarli a darli ahah
T
Trasciatti (1400 points)
13 20 34
by (1.4k points)
Posso offrirti un consiglio generico: ci sono alcuni concetti che noi diamo per scontato ma che impiegano tempo prezioso. Facciamo un esempio di qualcosa a caso: lista1[0]=len(lista); lista2[0]=len(lista); lista3[0]=len(lista). Ora. Un'operazione banale come il calcolo della lunghezza di una lista potremmo dare per scontato che non conta nulla, eppure salvando quella lunghezza in una variabile anziché calcolare 3 volte (ammesso che la lista non cambi di lunghezza) risparmiamo tempo. Applichiamo questo concetto anche ad altri calcoli o accessi in memoria e vedi che risparmi tempo che davi per scontato di dover spendere per forza(mantenendo un equilibrio, se la lunghezza della lista la usi solo 2 volte magari non ti conviene salvarla per questioni di spazio / rischi di aumentare il tempo)