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

Problemi con i test dell'homework

1
1951420 (250 points)
1 2 3
asked Oct 27, 2020 in HW2 obbligatorio by 1951420 (250 points)
Buonasera, ho consegnato l'homework più volte. Il primo problema riscontrato è che sul mio pc passa tutti i test, mentre quando lo consegno su Q2A ne passa 15 o al massimo 16.  Il secondo problema invece riguarda il voto provvisorio: ho consegnato un homework di complessità ciclomatica 7, mi passava 15 test e mi dava 28 come voto provvisorio; successivamente ho modificato il codice per abbassare la complessità ciclomatica a 5, ma il voto è sceso a 26. Quindi ho rimosso le modifiche applicate nell'ultimo tentativo per riconsegnare quello con complessità 7, solo che ora il voto provvisorio invece di essere 28 è diventato 26. Cosa posso fare per rimediare?
145 views

3 Answers

Best answer
AdSum (16290 points)
9 20 134
answered Oct 27, 2020 by AdSum (16,290 points)
selected Oct 28, 2020 by 1951420
Buonasera, i test eseguiti sulla tua macchina servono solo a darti un'idea di quanto sia ottimizzato il tuo codice e soprattutto di quanto sia corretto. Il tuo computer ha una velocità differente rispetto alla macchina sulla quale vengono eseguiti i programmi (ad esempio io passavo solo 13 test e una volta caricato li ha passati tutti). Quindi l'idea di massima sarebbe di riuscire a passare tutti i test sulla tua macchina, in seguito carichi e vedi se li passi anche li, in caso contrario ottimizzi. Molto importante è anche controllare il motivo del mancato passaggio del test. Vai sulla scheda "results" e accedi a "correttezza". Se l'errore è TIMEOUT ERROR vuol dire che devi semplicemente ottimizzare, se l'errore riguarda i valori finali che sono errati vuol dire che non riesci a passare uno dei test per una falla logica nel programma (ti ricordo che il test01.py sul tuo computer NON include i test segreti dei quali non conosciamo i parametri), magari è proprio quello che ti crea problemi.
Per quanto riguarda il secondo problema è molto strano, probabilmente non hai eliminato tutte le modifiche. Il voto finale (se non erro) è unicamente basato sul numero di test passati con successo (più gli eventuali 2/4 punti bonus solo SE li fai tutti corretti) quindi sicuramente una piccola svista nella rimozione delle modifiche ti ha portato a fallire un ulteriore test.
Non c'è molto da rimediare purtroppo, se non hai un backup non puoi vedere cosa hai modificato erroneamente, ti consiglio di avere sempre un backup a disposizione, per situazioni come queste.

Buon lavoro!
C
ChristianSt (1790 points)
3 9 25
answered Oct 27, 2020 by ChristianSt (1,790 points)
Ti consiglio di andare sulla pagina Corso/Risultati nel tab Correttezza e leggere il log per vedere esattamente dove si trova il problema, potrebbe essere che vada in Timeout
1
1914925 (3070 points)
1 4 23
answered Oct 27, 2020 by 1914925 (3,070 points)
La VM su cui vengono fatti i test è mediamente più lenta del pc dell'utente. Se hai un pc piuttosto potente è probabile che la VM sia più lenta del tuo PC, perciò ecco il motivo per cui sul tuo pc li passi e sulla VM no.
Il voto provvisorio dipende da quanti test passi, il fatto che prima ne passassi 16 ed ora 15 può essere dovuto dal fatto che un test è davvero sull'orlo del timeout, magari facendo 0.49s nelle run "fortunate" ed oltre 0.5 per le run "sfortunate". Purtroppo c'è sempre una piccola variazione tra un test e l'altro. Dovresti cercare di ottimizzare il tuo codice affinché tu riesca a superare tutti i test con un buon margine di scarto dal timeout.