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

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

[HW8req] Implementazione Della Ricorsione Su Dizionario

MRinaudo (3660 points)
22 40 50
in HW8 obbligatorio by (3.7k points)

Ciao a tutti,

per l'implementazione del mio algoritmo, ho deciso di organizzare le istruzioni in un dizionario.

Come chiavi ho la città di partenza/indizi, mentre come valori ho una lista contenente tutte le città di destinazione/segreto.

Il vero problema adesso è applicare la ricorsione.

Dovrei farlo su una lista contente gli indizi, o la strada che ho preso è sbagliata ?

Vi ringrazio in anticipo per i consigli. smiley

Saluti!

1 Answer

twgever (17470 points)
8 29 105
by (17.5k points)
se il dizionario è fatto bene, allora già stai ad un buon punto. Passare ogni volta la lista degli indizi alla successiva chiamata ricorsiva è una buona idea per seguire i percorsi. Se hai strutturato il dizionario in maniera tale che fornendo l'indizio e la città, hai tutte le informazioni con quella combinazione, allora puoi procedere alla ricerca dei segreti
m
massimocoppola (950 points)
2 18 21
by (950 points)
scusate se mi intrometto ma io sono nella situazione di dover ripassare ad ogni chiamata oltre alla lista d'indizi anche il dizionario/istruzioni. c'è un modo per evitarlo?
s
stefano.fantauzzi (2260 points)
4 6 17
by (2.3k points)

Ciao credo che proprio teoricamente parlando se sei al passo n non sai quale sarà la partenza di Nikita al passo n + 2, quindi devi portarti dietro per forza tutte le possibili partenze con relativo indizio, ovvero tutte le chiavi del dizionario...se stai pensando di eliminare dal dizionario i valori già usati nel percorso con conseguente smaltimento delle chiavi, pensa al caso exponential e non farlo! wink

MRinaudo (3660 points)
22 40 50
by (3.7k points)
edited by

Ciao twgever,

grazie per la tua risposta.

Prendendo in considerazione il file "exponential.txt" come esempio, ho creato il seguente dizionario:

{('ROME', 'la'): [('MILAN', 'tic'), ('MILAN', 'toc'), ('MILAN', 'tac')],
 ('MILAN', 'la'): [('ROME', 'bing'), ('ROME', 'bong'), ('ROME', 'bang')]}

Non sono ancora riuscito ad implementare una funzione ricorsiva che mi trovi i segreti.

Come caso base, io ho impostato che la lista degli indizi ha 0 elementi.

Non saprei come procedere successivamente. Stavo pensando di scorrere ricorsivamente la lista degli indizi, ottenendo ['la', 'la', 'la', 'la', 'la', 'la', 'la', 'la', 'la', 'la', 'la'], ['la', 'la', 'la', 'la', 'la', 'la', 'la', 'la', 'la', 'la'], ['la', 'la', 'la', 'la', 'la', 'la', 'la', 'la', 'la'], etc., cioè la lista precedente senza il primo elemento, ma poi non saprei proprio come procedere da qui.

Non so se mi puoi dare qualche consiglio.

Grazie a tutti per le risposte!