Aiuto sulla ricorsione

A
Alerax (860 points)
0 2 5
asked Dec 12, 2020 in HW8 obbligatorio by Alerax (860 points)
Salve a tutti

Per risolvere l'HW8 la struttura dati che ho deciso di usare è quella del dizionario che ha questa forma {CittàIndizio : DestinazioneSegreto}.

Sono più di 2 giorni che sto cercando di effettuare la ricorsione ma non riesco a trovare una soluzione giusta. Solo una volta ci sono andato vicino però era sbagliato ovvero:

risultato atteso = 'mata hari ha sedotto ambasciatore zambia'

la funzione invece restituiva = 'vendita furto mata hari ha sedotto ambasciatore zambia'

Ovvero nel caso una chiave avesse più elementi ( come nel caso di RomaLa che è presente più volte in esempio.txt) rimangono salvati anche i segreti precedenti.

Quindi chiedo perfavore aiuto per questa ricorsione perché sto letteralmente impazzendo e questo mi sta facendo perdere le speranze :(

3 Answers

Best answer
f
fabio.chiarini (2280 points)
0 0 7
answered Dec 12, 2020 by fabio.chiarini (2,280 points)
selected Dec 12, 2020 by Alerax
Anche io ho avuto lo stesso problema. A me si verificava perché ad ogni ricorsione costruivo un pezzeto di segreto che poi passavo agli argomenti della ricorsione successiva e via dicendo.

Facevo quindi: segreto = segreto + segreto_appena_trovato e poi passavo la variabile segreto alla funzione ricorsiva.

Io ho risolto passando direttamente il "segreto aggiornato" all'interno della funzione ricorsiva, quindi senza salvarlo prima in una variabile per poi passargli la stessa.

Non so come sia strutturato il tuo codice, ma se fai qualcosa di simile prova a controllare che non sia quello il problema. Spero ti sia di aiuto.
Fabioerpini (7970 points)
6 10 27
commented Dec 12, 2020 by Fabioerpini (7,970 points)
Anche tu hai utilizzato un dizionario simile al mio?
f
fabio.chiarini (2280 points)
0 0 7
commented Dec 12, 2020 by fabio.chiarini (2,280 points)
Praticamente sì, ho usato delle tuple come chiavi al posto di un'unica stringa, ma come struttura è la stessa.
A
Alerax (860 points)
0 2 5
commented Dec 12, 2020 by Alerax (860 points)
In teoria io faccio lo stesso errore che facevi te ovvero passo alla funzione successiva il segreto "accumulato".

Ho implementato quindi quello che mi hai consigliato ma facendo così lui alla fine mi salva solo l'ultimo segreto.
Fabioerpini (7970 points)
6 10 27
answered Dec 12, 2020 by Fabioerpini (7,970 points)

Mi trovo nella tua stessa situazione, ho creato un dizionario che ha come chiavi la città + l'indizio in clues, quindi per il file esempio.txt ho {'ROMAla': ['PARIGI', 'CAIRO', 'MOSCA'], 'PARIGIbocca': ['BERLINO', 'CANCUN']} e perciò conosco le diramazioni massime di roma e di parigi... Non mi viene in mente una soluzione valida... sad

twgever (15190 points)
7 27 105
answered Dec 12, 2020 by twgever (15,190 points)
hai già analizzato con il debuggger? sei riuscito ad identificare la parte problematica? il comando che più contribuisce all'errore?