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

Do you need help?

[HW8req] Utilizzo Di Alberi

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

Ciao a tutti,

sto cercando di sviluppare un algoritmo ricorsivo che mi permetta di "spostare" Nikita in ogni città.

Pensavo di creare un albero dove ogni nodo è una città, ma poi non saprei come gestire gli indizi e i segreti in tutto questo.

Qualcuno mi può aiutare ?

Grazie. smiley

Saluti.

908 views
closed with the note: Risolto.

5 Answers

Best answer
SimoneModiga (3370 points)
7 18 34
by (3.4k points)
selected by
Salve ti sconsiglierei la creazione di un albero, perchè nel caso ci riuscissi dovresti crearlo e poi leggerlo applicando il doppio dello sforzo, potrei consigliarti di porre le varie istruzioni su un'altra struttura dati, e poi scorrerla ricorsivamente senza fare troppa fatica.

In fin dei conti la struttura dati che crei puo' essere implicitamente un albero, ma lo crei piu' facilmente, senza classi e ulteriori cose.

Ti consiglio di rappresentarti graficamente il percorso di nikita su un foglio cosi da avere ordine mentale e strutturare bene i passi.

Spero ti sia stato utile.
Hatlas (5340 points)
1 2 7
by (5.3k points)
Un'altra struttura dati tipo?
SimoneModiga (3370 points)
7 18 34
by (3.4k points)
tipo il dizionario, perfetto se trovi chiavi uniche per muoverti ricorsivamente
n
nicosemp (630 points)
0 2 6
by (630 points)
Io ho lo stesso dubbio... forse andrebbe fatto usando le parole indizio come chiavi?
1
1937764 (3520 points)
7 14 42
by (3.5k points)
Calcolare l'intero albero, poi percorrerlo ex-novo, mi sembra poco efficiente.

Lo si può percorrere come albero di ricorsione tra le chiamate, piuttosto che crearlo come struttura dati vera e propria
n
nicosemp (630 points)
0 2 6
by (630 points)
Scusa ma se non si costruisce un albero vuol dire che agiamo direttamente sul file (lista di righe).

Quindi ad ogni ricorsione devo comunque leggermi tutta la lista di stringhe e controllare se è la città e l'indizio giusto.

Almeno senza costruire una struttura ad albero mi sembra l'unica soluzione... Sbaglio?

da esempio.txt: Trovo ROMAlaPARIGIdiamanti, quindi devo cercare un PARIGIbocca...
Qui devo per forza ciclare di nuovo la stessa lista di stringhe. Non posso eliminarne una parte e ciclare solo un sottoinsieme.
_
_ginevra_ (620 points)
0 11 15
by (620 points)
non so se sto dicendo una cosa senza senso ma tipo ordinare il file in ordine alfabetico e poi usare un binary search algorithm?
andrea_25 (6070 points)
2 2 24
by (6.1k points)
In che senso ordinare il file in ordine alfabetico? A che pro?
_
_ginevra_ (620 points)
0 11 15
by (620 points)
il pro e solo che non devi ciclare tutto il file alla cieca per trovare la prossima citta
wtg (160 points)
0 0 1
by (160 points)
"da esempio.txt: Trovo ROMAlaPARIGIdiamanti, quindi devo cercare un PARIGIbocca..."

Anche io sto provando così, però c'è il problema poi di trovare il ramo che inizia da PARIGI con indizio "bocca". Cioè scritto così da quanto pare, riesci a trovare i rami che partono dalla città iniziale ma poi nei sottonodi ti perdi le altre biforcazioni. Dovresti ricordati che hai trovato una biforcazione e fare dei cicli. Stessa cosa per gli altri sottonodi.
andrea_25 (6070 points)
2 2 24
by (6.1k points)
Io l'ho fatto in due modi diversi, uno dei quali consiste proprio nel creare l'albero n-ario (più per esercizio che per effettiva necessità) e nel navigarlo ricorsivamente alla ricerca dei segreti e dell'ultima città, quindi si può fare.

Tuttavia sta a te scegliere se è questa la strada migliore da perseguire oppure no.

Potresti creare una classe nodo dove spacchetti le varie informazioni che trovi in ogni città come attributi da assegnare al nodo stesso, in questo modo hai tutte le informazioni che ti servono in ogni nodo.
L
Lion (1050 points)
0 18 26
by (1.1k points)
Lascia perdere gli alberi. Lo spostamento di Nikita lo fa la ricorsione (il percorso sta nella tua testa, non esiste veramente).

Io ti consiglierei di usare delle liste, o ancora meglio dei dizionari