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

Do you need help?

Costruire i segreti senza ridondanza

g
gullisa (1170 points)
9 26 32
in HW8 obbligatorio by (1.2k points)
closed by
Ciao a tutti!

La mia funzione ricorsiva funziona tramite dizionario: ogni chiave è una città+indizio, il valore è una lista di tuple dove ogni tupla è costituita dalla città di destinazione ed il segreto.

La funzione ricorsiva converge perchè ad ogni chiamata la lista dei clues si accorcia di un elemento, inoltre le passo come argomento una stringa vuota per memorizzare ad ogni chiamata la concatenazione dei segreti.

Il punto è che non riesco a trovare il modo di ritornare direttamente la stringa dei segreti finale e la città finale di destinazione. In sostanza ottengo:

[('vendita ', 'PARIGI'),
 ('vendita diamanti ', 'BERLINO'),
 ('vendita diamanti rubati ', 'PECHINO'),
 ('vendita diamanti rubati stanotte ', 'ROMA'),
 ('vendita diamanti rubati stanotte ad ', 'PARIGI'),
 ('vendita diamanti rubati stanotte ad anversa ', 'CANCUN') etc...],

ma mi piacerebbe ottenere solo l'ultima.

Ci sto sbattendo la testa da parecchio, ma senza esito. Qualcuno ha consigli?

Grazie!
323 views
closed with the note: Risolto

1 Answer

CiZ (3810 points)
5 13 21
by (3.8k points)
edited by

Dipende tutto dal caso base, da come hai spiegato tu: quando clues = ' ' allora dovrebbe fare return segreto

 Ma ogni volta che esce dalla ricorsione significa che ha finito un segreto per esempio: vendita diamanti rubati stanotte ad anversa, e poi tu lo aggiungi ad una lista(?) , da come hai scritto l'esempio sembra così.

Sicuro che non ci sai qualche valore che ti faccia tornare il risultato nel return che invece deve solo fare la ricorsione? Mi spiego meglio, finché tu non arrivi al caso base non devi tornare nessun risultato, ma devi tornare la funzione per poter fare la ricosione. Possibile che in questo ultimo return ci sia qualcosa che invece ritorna al risultato?

Tipo return segreto, funct ?

EDIT: al massimo prendi l'ultimo elemento della lista cioè lista[-1]. Per ovviare temporaneamente al problema

g
gullisa (1170 points)
9 26 32
by (1.2k points)
Sì credo che l'inghippo stia proprio nel return. Sto provando a ritornare una lista vuota quando i clues si esauriscono o una stringa vuota o ad appendere una lista vuota ad una lista vuota già instanziata dentro la funzione (cui appendo ad ogni passata i segreti-destinazione...ed è qui che si genera quell'accodarsi di stringhe concatenate di cui sopra). Ma ci sto ancora tentando.
CiZ (3810 points)
5 13 21
by (3.8k points)
Non ho capito perché dovresti aggiungere una lista vuota.
g
gullisa (1170 points)
9 26 32
by (1.2k points)
Sì, hai ragione, non è necessario. Concateno i segreti adesso, ma sto tentando di ritornarli separati e devo comprendere come. Grazie