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

Do you need help?

velocizzare codice hw4

s
simone.lioy (1420 points)
28 30 39
in HW4 obbligatorio by (1.4k points)
finalmente sono riuscito ad unire le parole e a completare l'esercizio. la parola nascosta l'ho trovata tramite il max di count per questo procedimento mi manda in timeout tutti i test. un modo per velocizzare?
785 views
closed

3 Answers

Best answer
AndreaGasparini (18850 points)
7 12 120
by (18.9k points)
edited by
Da come l'hai descritto l'approccio che utilizzi non credo possa essere velocizzato, devi ripensarlo da capo.

Dopo aver composto tutte le parole presenti nel file, il modo più immediato di iniziare credo sia quello di generare tutte le possibili sottostringhe della lunghezza data presenti nella prima parola per poi procedere sapendo che sicuramente la parola segreta è una tra queste sottostringhe (dato che deve essere presente una volta in ogni parola).

Comunque come ti ha consigliato Christian, prima di porre una domanda controlla quelle simili già presenti su Q2A perché, per esempio, questa stessa risposta che ti ho dato l'avevo già scritta uguale in un altro post ;)
Antares (7770 points)
5 6 41
by (7.8k points)
SI può fare anche senza l'utilizzo dei dizionari utilizzando la funzione count() che credo già conosci ;)
AndreaGasparini (18850 points)
7 12 120
by (18.9k points)
che si può utilizzare anche con l'implementazione che sfrutta i dizionari ovviamente
s
simone.lioy (1420 points)
28 30 39
by (1.4k points)
si però è molto lenta
AndreaGasparini (18850 points)
7 12 120
by (18.9k points)
io faccio 115 ms
s
simone.lioy (1420 points)
28 30 39
by (1.4k points)
con count fai cosi poco?
Christian (15220 points)
3 4 77
by (15.2k points)

Ciao, 

innanzitutto vedi se nella fase di Peer Assessment ricevi qualche consiglio utile da chi ha letto il tuo algoritmo devil

Per caso hai già dato un'occhiata a queste altre domande?

T
Trasciatti (1400 points)
13 20 34
by (1.4k points)
Innanzitutto ti consiglio di capire perché va piano. Cosa fai? Dividi in sotto parole lunghe M (lunghezza della parola magica) e poi conti quante di queste sono tante quanto le parole? Pensa, se fai questo o qualcosa di simile, quando fermeresti questa conta? Abbiamo degli indizi importanti, ovvero che la parola magica c'è esattamente una volta in ogni parola.  Se non sfrutti questo sarà difficile avere un programma ottimizzato, devi pensare  1) dov'è che il tuo programma fa cose superflue 2) dov'è che impiega troppo tempo per un'operazione che potresti fare in meno. Ad esempio, se conti quante sottostringhe ci sono e mentre lo fai hanno già superato il numero di parole, dovresti fermarti; detto questo, ti consiglio un approccio più basato sugli indizi che abbiamo che una cosa super generica