Soluzioni più efficienti esercizio 3

v
val9 (9770 points)
0 28 53
asked Oct 30, 2018 in Es3 by val9 (9,770 points)
closed Nov 1, 2018 by andrea.sterbini

Buongiorno, 

mi chiedevo se ci fossero dei metodi più efficienti per risolvere l'es3 senza dover scorrere tutto il testo, parola per parola, e senza dover utilizzare count() o find()  (che a mio avviso possono essere delle funzioni rischiose).

Grazie smiley

428 views
closed with note: answered

2 Answers

Best answer
Xriuk (13590 points)
0 24 116
answered Oct 30, 2018 by Xriuk (13,590 points)
selected Dec 5, 2018 by val9

Non puoi fare affidamento su count o find perchè rischi di conteggiare parole sbagliate (caso: "lucenavelanavelanaveelica" con lista ['ala','cena','elica','nave','luce','lana','vela'], la parola cena evidenziata sta a metà di due parole e non è valida).

L'unica soluzione (a mio avviso) è scorrere tutto il testo, ma per farlo c'è modo e modo, ad esempio potresti saltare alcune iterazioni in base alla lunghezza delle parole.

Poi dipende anche come fai il controllo sul testo con la lista delle parole.

v
val9 (9770 points)
0 28 53
commented Oct 30, 2018 by val9 (9,770 points)
Io scorro il testo, confrontando parola per parola con la porzione di testo che prendo  fino alla lunghezza della parola. Il problema è che risulta fin troppo lento.
Xriuk (13590 points)
0 24 116
commented Oct 30, 2018 by Xriuk (13,590 points)
E se controlli direttamente se la porzione di testo che prendi è nella lista? Così dovrebbe essere più veloce
v
val9 (9770 points)
0 28 53
commented Oct 30, 2018 by val9 (9,770 points)
Teoricamente non impiegherei meno tempo a confrontare ogni parola della lista con la porzione di testo avente stessa lunghezza della parola?
_andrea_ (45670 points)
2 40 297
answered Oct 30, 2018 by _andrea_ (45,670 points)
Quanto ci mette il tuo programma a finire tutti i test usando questo metodo?
_andrea_ (45670 points)
2 40 297
commented Oct 30, 2018 by _andrea_ (45,670 points)
Dipende da come utilizzi lo slicing. Se fai in modo di non controllare mai due volte la stessa slice non c'è problema
v
val9 (9770 points)
0 28 53
commented Oct 30, 2018 by val9 (9,770 points)
Cosa intendi per controllare due volte? Dopo aver confrontato in base alla lunghezza, e trovata la parola, io passo a cercare quella che si trova nella porzione successiva. :|
_andrea_ (45670 points)
2 40 297
commented Oct 30, 2018 by _andrea_ (45,670 points)
Anche io faccio così, stesso identico modo
v
val9 (9770 points)
0 28 53
commented Oct 30, 2018 by val9 (9,770 points)
allora non capisco proprio dove sia il problema :(
_andrea_ (45670 points)
2 40 297
commented Oct 30, 2018 by _andrea_ (45,670 points)
Eh bisognerebbe vedere il tuo codice ma non posso ovviamente, magari hai fatto qualche operazione inutile da qualche parte, o cicli poco ottimizzati