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

Do you need help?

Ottimizzazione es2

1
1841421 (970 points)
3 31 41
in Es2 by (970 points)
recategorized by
Salve,

Non riesco a passare gli ultimi due test praticamente di un niente ma cmq nel secondo non ci rientro.

Faccio un for da N ad 1

Se quel valore non c'è tra le lampadine accese calcolo i divisori

I divisori li trovo con la radice e faccio la differenza simmetrica tra i due set(lampadine rimaste accese)

Come ho già detto utilizzo i set.

Qualche idea per l'ottimizzazione?
521 views
closed with the note: answered

4 Answers

L
Luca_E (900 points)
2 3 7
by (900 points)
Prova ad utilizzare i dizionari sono molto più veloci, anche se ti rendono il codice più intricato, ad ogni lampadina assegno un valore che la identifa se è accese o spenta.
Sickboy (28240 points)
9 25 68
by (28.2k points)
Usa delle liste, in una metti tutti 0 che è quella delle lampadine con un ciclo carichi quelle accese e poi fai il ciclo principale dove controlli da N a 1 se nella posizione i della lista c'è 1 cioè accesa o 0 spenta e cambi di conseguenza
1
1841421 (970 points)
3 31 41
by (970 points)
Grande!
La lista con le lampadine è una struttura molto più maneggevole
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
io ho strutturato il codice nel tuo stesso modo e nella macchina virtuale ci mette poco e supera tutti i test. io ho provato ad usare anche i dizionari ma il codice con questi ultimi oscilla sempre tra gli stessi valori del codice con gli insiemi. Usare le liste significa impiegare nettamente più tempo. Non vedo come sia possibile che tu non riesca a passare il secondo esercizio nonostante l'utilizzo degli insiemi
enrico.fortuna (2990 points)
2 2 6
by (3.0k points)
edited by
L' ottimizzazione del secondo si basa principalmente sul metodo che utilizzi per trovare i divisori del numero. In che modo calcoli i divisori? Li cerchi fino a radice di n?
Per il resto usi gli insiemi, quindi non dovresti avere problemi nel aggiungere o rimuovere elementi.