Do you need any help?

Componenti lista uguali

dolcetto_gommoso (2790 points)
3 6 18
asked Oct 16, 2020 in HW1 opzionale by dolcetto_gommoso (2,790 points)
recategorized Oct 20, 2020 by andrea.sterbini
Salve a tutti, come sta andando l'homework?

Io sto avendo alcuni problemi con i tempi del test dei many 1s, e stavo pensando a fare un controllo se tutti i numeri all'interno della lista sono uguali...

Sapete darmi una dritta per raggiungere il mio obiettivo?

Vi ringrazio e vi auguro un buon proseguimento nello svolgimento dell'homework
316 views

2 Answers

Best answer
Rametto (4910 points)
3 4 25
answered Oct 16, 2020 by Rametto (4,910 points)
selected Oct 16, 2020 by dolcetto_gommoso
all(v == lista[0] for v in lista)

lo pseudo-codice è questo, usalo per la tua condizione magari e poi vedi tu su cosa fare dopo. Sicuramente utilizza il controllo e poi fai le operazioni più consone sulla lista.
R
Raffaele (3850 points)
10 24 48
commented Oct 17, 2020 by Raffaele (3,850 points)
edited Oct 18, 2020 by Raffaele
All() è un metodo che controlla solo se all'interno dell'oggetto iterabile ci sono valori che ritornano True o False.

All(lista) ritorna falso se anche solo un valore all'interno ritorna falso.

Mentre ritorna vero se non ci sono all'interno valori che ritornano falso.

Ho usato il metodo all() anche io per far tornare vero quando il for si finisce di risolvere nella condizione prefissata. Il for si comporta come un generatore in questo caso, quindi diventa un è cone fosse un iterabile. Questo permette di risparmiare alcune righe di codice, ma poteva essere fatto anche senza il metodo all(). Per velocizzare l'algoritmo nel risolvere il caso di tutti numeri uguali nella lista, con somma definita, bisogna utilizzare una formula matematica(non ci sono elevamenti a potenza e non ci sono fattoriali) per calcolare automaticamente il numero di ripetizioni.
giordano_sannino (13650 points)
7 16 81
answered Oct 16, 2020 by giordano_sannino (13,650 points)
ciao! l'homework sta andando bene, anch'io non riesco a fare il passaggio con tutti 1, ci mette troppo tempo! penso perchè in quel caso il programma sfrutti il massimo di cicli dei for, perchè la stringa per arrivare al cont si riempe in modo lento(con gli 1) ogni volta (per tutta la mega lista).

Secondo me però non dovremmo lavorare sull'input specifico, perchè se hai un 2etutti1, il numero di iterazioni sarà comunque altissimo, e il controllo che cerchi tu non funzionerebbe!(o magari il 2 sarà in seconda posizione).