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

Do you need help?

Suggerimento HW8

a
andreaamici (1740 points)
11 12 21
in HW8 obbligatorio by (1.7k points)
Ciao,vorrei chiedere un suggerrimento su come avete gestito il problema che si pone quando scorro una parola e sia a destra che giù c'è una lettera compatibile con la parola..
1.5k views

4 Answers

edoardottt (8210 points)
1 3 37
by (8.2k points)
Io chiamo la ricorsione su entrambi. Poi in base a cosa restituiscono le due chiamate scelgo il risultato. Una delle due può essere None, oppure entrambe possono avere un risultato valido. In quest'ultimo caso devi restituire la prima in ordine lessicografico
a
andreaamici (1740 points)
11 12 21
by (1.7k points)
io anche la chiamo su entrambi ma nei test ci sono un paio di parole per cui non mi funziona il codice..
Andrea Sanchietti (3100 points)
5 7 40
by (3.1k points)
prima vado a destra, se a destra c'è la parola ritorno il percorso. Altrimenti controllo di sotto. Ovviamente per fare questo passaggio serve un if che valuta quello che il percorso di destra ha ritornato.
B
Benigno (1020 points)
9 17 28
by (1.0k points)
E se andando di nuovo a destra trovi un’altra parola ancora?
LUPOSaymon (2730 points)
2 3 27
by (2.7k points)
Ti ricordo che stai sfruttando il "potere" delle ricorsioni.

Se possiamo andiamo andare sia in basso che a destra, proviamo prima ad andare a destra: se riusciamo a trovare la parola data, allora restituiamo il percorso che abbiamo effettuato, altrimenti, proviamo ad andare verso il basso e cosi via, sfruttando la ricorsione.
a
andreaamici (1740 points)
11 12 21
by (1.7k points)
il problema si pone quando ho sia a destra che giù la lettera giusta e quindi da la precendenza a destra e non finisce il percorso...alora ho implementato una strada che va in paralleo che va prima giuù e poi a destra ma in alcuni test dovrebbe fare tipo DGDGDG ma poi fa o DDDD o GGGG poiche ci sono lettere giuste e quindi poi mi torna un 'percorso errato'
LUPOSaymon (2730 points)
2 3 27
by (2.7k points)
Quando puoi andare sia a destra e sia giù, memorizzi il valore che la funzione ricorsiva ti dà andando a destra, se è una stringa(quindi se siamo riusciti a trovare una parola completa) restituiamo il valore ottenuto, altrimenti andiamo verso il basso e così via, sfruttando la ricorsione.

Spero di essermi spiegato bene questa volta :)
D
DM (730 points)
0 0 4
by (730 points)
Prova a mettere dei print nella tua funzione ricorsiva per vedere come trova la parola.

Se sia a destra che in basso c'è la stessa lettera, ad un certo punto la ricorsione si fermerà in un dei due percorsi se non trova la parola che deve. Quindi avrai un percorso disponibile.

Altrimenti guarda come la tua funzione ricorsiva trova la parola:

Avevo il tuo stesso problema ma visionando il comportamento della mia funzione ricorsiva, ho notato che trovava prima la parola di "destra"  per intero e poi quella in "basso" (ovviamente nel caso in cui entrambi i percorsi sono esatti), non ho fatto altro che tornarmi la prima parola che trovata. Ora non so come hai strutturato il tuo codice, ma io personalmente faccio solo due chiamate in tutta la funzione ricorsiva.