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.

timeout ultimo test hw4 es 2

f
federicoAg (1910 points)
1 7 16
in Es2 by (1.9k points)
Non riesco a capire perché continua a non passarmi l'ultimo test dell'es2, eppure il tempo di esecuzione complessivo risulta minore del tempo singolo per ciascun test (3s mi pare), anche se di poco.
568 views
closed

2 Answers

Best answer
Void (1070 points)
2 4 11
by (1.1k points)
selected by
Ho il tuo stesso problema ma non posso dire se la causa che lo provochi sia la stessa.

Penso che l'ultimo test del mio programma fallisca in termini di timeout per via della ricorsione utilizzata nel popolare l'albero e poi successivamente riusata nella ricerca delle foglie.

(Quindi utilizzo metodi ricorsivi per due volte)

Devo ancora provare a ritornare le combinazioni una volta che ho finito di popolare l'albero, quindi per ora è solo una mia ipotesi.

(Anche se è altamente probabile sia questo il problema)
f
federicoAg (1910 points)
1 7 16
by (1.9k points)
edited by
Io ho provato in questo senso a creare una lista come variabile globale nella classe albero in cui mettere tutte le foglie direttamente durante la creazione dell'albero ma mi fallisce tutti i test perché non si possono usare le globali (comunque il tempo era leggermente minore).

A questo punto potrebbe essere o l'ordinamento finale o il fatto di scorrere ogni elemento delle liste per verificare che quello più l'adiacente sia un numero pari (per creare un nuovo nodo)
Void (1070 points)
2 4 11
by (1.1k points)
edited by

Anche a me continua a non passarlo, nonostante abbia unificato le ricorsioni (alla fine dovevo solo aggiungere due comandi, il resto dei metodi è praticamente uguale  ).

Forse sbagliamo direttamente nel creare rami che sappiamo produrranno foglie simili.

Per quanto riguarda l'ordinamento basta utilizzare un unico metodo 'sorted', dato che implementa nel suo meccanismo un algoritmo di QuickSort (se sbaglio correggetemi) non penso sia quello.7

Ho risolto il problema.

Non ho generato nessun ramo che avessi già creato, sarebbe stata una perdita di tempo dato che se un ramo esiste già allora anche le sue foglie già esistono.

Ho risparmiato molte iterazioni ricorsive in questo modo, ora l'ultimo test funziona 2 volte su 3 poiché per qualche micron di secondo sfora oltre i tre secondi ed altri tentativi invece rientra nel tempo.

(Senza dubbio quindi ignorare i rami già creati aiuta)

_andrea_ (45670 points)
11 42 297
by (45.7k points)
Ma non ho capito una cosa: tu stai cercando di capire la causa della lentezza del tuo programma, o stai cercando di capire perché non ti passa l'ultimo test nonostante ti dica che il tempo totale è inferiore a 3 secondi? Perché sono due cose diverse
f
federicoAg (1910 points)
1 7 16
by (1.9k points)
si effettivamente era questo il problema, ho usato una variabile di classe (indentata come se fosse un metodo) dove tengo conto delle combinazioni, però bisogna svuotarla prima della fine della funzione principale perché altrimenti rimane in memoria e altera i test successivi
_andrea_ (45670 points)
11 42 297
by (45.7k points)
Sul tuo pc lo supera e sulla VM no?
f
federicoAg (1910 points)
1 7 16
by (1.9k points)
edited by
sul mio no, ma sulla VM contavo di passarlo dato che il tempo di esecuzione sulla VM e' minore di 3 secondi (che è anche il tempo massimo per ogni singolo test, quindi logicamente dovrebbe passarlo).

Comunque penso che la pesantezza dell'ultimo test sia data dal fatto che uso pop e insert per creare nuove liste che uso nel costruttore dei nuovi nodi figli che ogni volta cambiano gli indici delle liste (genero ricorsivamente tutto l'albero creando il primo nodo)
_andrea_ (45670 points)
11 42 297
by (45.7k points)
Aspè non ho capito. Sul tuo pc va in timeout giusto? E sulla VM pure immagino
f
federicoAg (1910 points)
1 7 16
by (1.9k points)
si esatto, e il mio pc è più lento
_andrea_ (45670 points)
11 42 297
by (45.7k points)
Controlla quanti test ti supera, e guarda anche nella scheda correttezza. Può darsi che ti mostri il tempo ma che superi comunque un test in meno. Anche a me ieri lo faceva, poi l'ho migliorato e li supera tutti