Do you need any help?

Costruire i segreti senza ridondanza

g
gullisa (1170 points)
7 24 31
asked Dec 11, 2020 in HW8 obbligatorio by gullisa (1,170 points)
closed Dec 12, 2020 by gullisa
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!
199 views
closed with note: Risolto

1 Answer

CiZ (3810 points)
4 11 20
answered Dec 11, 2020 by CiZ (3,810 points)
edited Dec 11, 2020 by CiZ

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)
7 24 31
commented Dec 11, 2020 by gullisa (1,170 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)
4 11 20
commented Dec 11, 2020 by CiZ (3,810 points)
Non ho capito perché dovresti aggiungere una lista vuota.
g
gullisa (1170 points)
7 24 31
commented Dec 11, 2020 by gullisa (1,170 points)
Sì, hai ragione, non è necessario. Concateno i segreti adesso, ma sto tentando di ritornarli separati e devo comprendere come. Grazie