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.

esercizio 1 consigli

G
GiuseppeD. (340 points)
1 3 8
in Es1 by (340 points)
closed by

nel primo esercizio del homework, passo tranquillamente tutti i test tranne l' ultimo che mi va in timeout. Non mi sono arrivati consigli buoni nel peer assessment ,per migliorare il mio codice (con il quale comunque prendo +2 intricatezza ) posso chiedere qualche consiglio per passare l'ultimo test... grazie!!!

804 views
closed with the note: deadline passed

3 Answers

G
Gdn98 (11600 points)
5 35 101
by (11.6k points)
Che tipo di ragionamento usi?
G
GiuseppeD. (340 points)
1 3 8
by (340 points)
creo una lista dei voti da 0 a c+1 e per ogni voto conto con un .count() ,i voti all'interno della lista voti. Infine li aggiungo alla lista finale.(uso solo un for)
G
Gdn98 (11600 points)
5 35 101
by (11.6k points)
Il problema non sono i for o quanti sono, ma come li usi. Il count ripetuto c+1 volte ti scorre la lista c+1 volte perchè deve cercare i valori su tutta la lista anche se poi effettivamente all'interno non ci sono. Lavora su quello, magari puoi ordinarti la lista e usare un ciclo for e un while che ti scorrono la lista e quando trova un valore diverso da quello che cerchi ti fermi e continui a cercare, magari potresti usare anche uno slice per evitare di riandare a cercare tra quelli che già hai cercato. E tieni conto di quante volte è presente con un contatore. spero di essermi spiegato
Shunk (6140 points)
8 26 86
by (6.1k points)
È successo anche e non sono riuscito a trovare una soluzione, perché mi sembrava fatto bene
B
Barny (390 points)
1 4 6
by (390 points)
Fai una condizione con un if in modo tale che se una lista è ordinata allora la inverte aggiungendoci il numero di studenti che passano quando la soglia è minima. Così dovresti passare tranquillamente anche l'ultimo test
alessioclemente (19640 points)
18 67 153
by (19.6k points)
Prova ad ordinare la lista. In questo modo se il primo numero è maggiore della soglia, lo saranno anche tutti gli altri e ti risparmi molte iterazioni!
Shunk (6140 points)
8 26 86
by (6.1k points)
Però già l'ordinamento rallenta
alessioclemente (19640 points)
18 67 153
by (19.6k points)
Si, ma fai molto meno della metà delle iterazioni
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
La soluzione è non usare né count () e nemmeno sort () perché entrambi questi metodi impiegano molto tempo
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
Potrebbe darsi perché io ho provato solo con sort e ho ipotizzato la stessa cosa per count anche se potrebbe funzionare ma non su una semplice lista
a.capobianco1 (16770 points)
14 54 165
by (16.8k points)
Ci stiamo un po mischiando con domande e risposte... Ripeto: Ma hai usato solo il metodo 'sort' o hai usato anche la funzione 'sorted'? sono solo curioso di capire...
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
Io non ho usato né count né sort oppure sorted e sono sicuro che se questi metodi vengono applicati sulle liste sicuro non passerai i timeout. Magari è possibile realizzare un codice efficiente usando questi metodi sui dizionari. Io personalmente non ci ho provato ma per come ho scritto il mio codice è possibile ordinare la lista senza sort o sorted
a.capobianco1 (16770 points)
14 54 165
by (16.8k points)
Beh io ho applicato la funzione sorted ad una lista. Non ho usato il dizionario e il mio time out in vm è stato meno di mezzo secondo.... Ero solo curioso di capire come hai fatto a ordinare senza sorted o sort... Comunque... Capisco... fino al 7 siete in competizione quindi lo capisco se non vuoi ' svelare' il meccanismo. Non insisto oltre anche se una mezza idea di come fare è venuta anche a me... Solo che ho l'impressione che renderebbe più lento l'algoritmo... Vabbè x me va bene così.
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
Capobianco se superi tutti i timeout con il sort di una lista complimenti a te a me non mi è venuto in mente e pensavo non fosse possibile siccome ci ho provato a lungo