Ciao a tutti, eseguendo i test relativi all'HW8req vedo che il mio codice fallisce solamente nei test exponential.
Provo a spiegare in pseudo-codice cosa fa il mio programma nella funzione ricorsiva cosi che possiate aiutarmi:
INPUT della funzione (città_indizio, dizionario, clues, set, segreti)
Il dizionario ha come chiave la tupla (città, indizio) e come valori tutti i possibili percorsi che Nikita può seguire in base a quella chiave es. {('ROME', 'la'): [['MILAN', 'tic'], ['MILAN', 'toc'], ['MILAN', 'tac']], ('MILAN', 'la'): [['ROME', 'bing'], ['ROME', 'bong'], ['ROME', 'bang']]}
se la tupla (città ,indizio) è nel dizionario, prendo la lista corrispondente nel dizionario, per ogni sottolista:
ricavo il segreto e la città in cui dovrò andare, quindi se la lista contenente tutti gli indizi #es. ['la', 'la', 'la', 'la']# è vuota allora aggiungo la tupla (stringa dei segreti che ho raccolo, ultima città) ad un set altrimenti richiamo la funzione ricorsiva, fuori dal for torno l'insieme finale.
Analizzando ogni chiamata di funzione ricorsiva ho notato che il codice lavora in questo modo:
esempio del test exponential4
tic bing tic bing
tic bing toc bing
tic bing tac bing
tic bong tic bing
tic bong toc bing
tic bong tac bing
tic bang tic bing
tic bang toc bing
tic bang tac bing
toc bing tic bing
....
Il problema sta nell'ultima parola di ogni stringa, è sempre 'bing' quando in realtà dovrebbe essere alternata 'bing', 'bong', 'bang'. Sembra come che non mi facesse l'ultima ricorsione di ogni percorso che segue. Infatti il numero di segreti che mi torna nell'insieme è 27 quando dovrebbe essere il triplo, 81 posiibili segreti per exponential4
Spero si capisca bene o male cosa fa il mio programma e che riusciate a darmi una mano per fixare questo problema, nel caso qualcosa non dovesse essere chiaro sono pronto a spiegare meglio.