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

Do you need help?

Concetto Timeout

a.capobianco1 (16770 points)
14 54 165
in Info sul corso e sugli esami by (16.8k points)
reshown by
So che dopo aver fatto già due homework la domanda che sto per fare farà sorridere qualcuno, ma dando uno sguardo ai tempi che gli algoritmi di altri colleghi hanno impiegato a svolgere alcuni singoli test ho cominciato a nutrire qualche dubbio sul concetto che ho di 'timeout'. Da quello che visto ho capito questo:
Il timeout di ogni esercizio va inteso come: [tempo impegnato x svolgere tutti i test dell'esercizio] /[numero di test] quindi è la media che deve essere inferiore al timeout e non il tempo per svolgere ogni singolo test.. Quindi per esempio se impiego 3,1,1,1 a svolgere correttamente tutti i test di un esercizio di 4 test il cui timeout è 2 prendo 30?
785 views
closed

3 Answers

Best answer
Auron (15880 points)
52 126 194
by (15.9k points)
selected by
Certo, se il Timeout fosse una media sarebbe tutto molto più semplice, perchè a fronte di test pensati per essere "pesanti" ce ne sono molti "piccoli", che servono per testare piccole cose e per darci possibilità di capire gli errori, che abbasserebbero drasticamente il tempo medio, essendo molto vicini allo 0.
Capisci però che questo non è possibile, perchè i test "pesanti" sono pensati apposta per "stressare" l'algoritmo e vedere come funziona su grandi moli di dati.
Nella pratica difficilmente ti capiterà di avere a che fare con una mole di dati contenuta tanto quanto quella dei test "piccoli", quindi quelli "grossi" sono sicuramente un miglior indice di quanto l'algoritmo sia efficiente e funzionale...
Un Timeout medio non farebbe risultare questa "bontà" nella programmazione, perchè probabilmente sarebbe estremamente facile superare tutti i test, anche con algoritmi non molto efficienti.
Stessa cosa dicasi per un Timeout Totale, come poteva essere quello dell'anno scorso, che dava un tempo massimo in cui doveva essere eseguita la totalità dei test (tenendo conto di un tot di secondi per ciascuno e sommandoli).

Sono il primo che ha fatto notare le problematiche relative al Timeout del primo esercizio di questo Homework in particolare, ma sono altrettanto i primo ad essere d'accordo sul fatto che un Timeout per singolo test sia la cosa migliore per insegnare come ottimizzare un codice... Ribadisco, in futuro se lavorerai nella programmazione gestirai grandi moli di dati, quindi sarebbe poco formativo lasciare che gli studenti si "crogiolino" sui tempi infinitesimali dei test piccoli per abbassare i timeout medi di tutti i test...

Per rispondere alla tua domanda, non prenderesti 30 nel caso da te proposto.
Come ti hanno correttamente risposto, nel caso di 3,1,1,1 e Timeout a 2, tu prenderesti 22.5 in quanto supereresti 3 test su 4, non superando il primo.
a.capobianco1 (16770 points)
14 54 165
by (16.8k points)
Ti ho scritto in privato.
Auron (15880 points)
52 126 194
by (15.9k points)
Ti ho risposto... Ho capito il tuo problema, e in effetti questo non dovrebbe accadere...
a.capobianco1 (16770 points)
14 54 165
by (16.8k points)
edited by
Sono felice che mi dai conferma.

Edit: non ero sicuro di aver bene interpretato il concetto di 'timeout' per questo sono stato alquanto vago.
Auron (15880 points)
52 126 194
by (15.9k points)
Solo un cieco non te la darebbe
_andrea_ (45670 points)
13 42 297
by (45.7k points)
Il timeout è il tempo massimi permesso per ogni test. Se un test supera il timeout viene considerato fallito. Se fai 3,1,1,1 e il timeout è 2, il primo fallisce e gli altri 3 sono giusti. Superi quindi 3 test su 4
a.capobianco1 (16770 points)
14 54 165
by (16.8k points)
edited by
Quindi dovrei prendere 22,5 / 30?

Edit:
Io pensavo fosse( 3+1+1+1) / 4=1,5 quindi 30/30... Sicuro non sia così?
Sickboy (28240 points)
9 25 68
by (28.2k points)
No è come detto da andrea qui sopra
_andrea_ (45670 points)
13 42 297
by (45.7k points)
Il timeout viene applicato a ogni test singolarmente
a.capobianco1 (16770 points)
14 54 165
by (16.8k points)

scusatemi se ribadisco:

Se io trovassi in una scheda 'correttezza' valori come

6, 5, 5, 1, 1, 1, 0, 0, 0, 0, 0, 0= 19 secondi 

il timeout è 5

non dovrei prendere 30 è corretto?

se lo chiedo un motivo c'è… 

evidentemente ma prima voglio essere sicuro di aver capito bene come funziona il calcolo del timeout cosa implica nel bonus e se va applicato ad ogni singolo test oppure va inteso come media ti tempo da non superare 

_andrea_ (45670 points)
13 42 297
by (45.7k points)
Si applica a ogni test
Shunk (6140 points)
8 26 86
by (6.1k points)
È come ti hanno già risposto, inoltre ti ricordo che i test della VM sono fatti su 10/15 esecuzioni dell'esercizio e il tempo finale sarà la media tra tutte le esecuzioni
È possibile (anzi abbassare probabile) che il tempo del tuo pc sia abbastanza ridotto rispetto a quello della macchina virtuale
a.capobianco1 (16770 points)
14 54 165
by (16.8k points)
non parlo di un mio esercizio testato sul mio pc, ma di un altro esercizio letto dalla classifica online quindi testato su VM

non voglio mettere in difficoltà nessun'altro studente.. sia chiaro… e che se il timeout fosse una media sarebbe tutto più facile (e la cosa onestamente non mi dispiacerebbe)
andrea.sterbini (208020 points)
756 1270 2377
by (208k points)

Confermo quanto detto sopra da altri.

Pensiamo che non avrebbe senso mettere un timeout globale perchè non vi farebbe apprezzare che è più importante ottimizzare le operazioni di maggior impatto su dati grandi piuttosto che operazioni veloci (e inoltre il timeout globale l'anno scorso è stato fonte di tanti grattacapi).

Abbiamo quest'anno preferito usare un timeout che viene applicato a ciascun test, e scelto (si spera) in modo da "premiare" gli algoritmi più efficienti, ma lasciando un buon voto a chi ha fatto algoritmi di buona qualità.

Il timeout ora non viene applicato nel calcolo dei tempi (Efficienza) che ora viene misurato anche se i test non sono superati tutti (basta che non si siano generati Errori). Anche per gli HW1 e 2 verrnno rifatte le misure dei tempi.
In ogni caso, per chi non si accontenta, e' sempre possibile migliorare il voto di un esercizio svolgendo il corrispondente esercizio di recupero del corrispondente HW di recupero.

a.capobianco1 (16770 points)
14 54 165
by (16.8k points)
Ho capito il ragionamento è ringrazio per la spiegazione.