Newsgroup: it.comp.programmare
Titolo: algoritmo in scheme

Ciao sono giovanna,devo preparare un esame sul linguaggio Scheme.Devo
costruire un algoritmo che risolva un labirinto.Avevo pensato a una lista
din cui ogni elemento e' una lista, Ogni lista contiene una sequenza di 0 e
1,dove gli 1 rappresentano il passaggio aperto e gli 0 sono il muro
(passaggio chiuso).Spero che qualcuno possa aiutarmi a scrivere l'algoritmo
--------------------------------
Inviato via 
http://usenet.iol.it


 Ciao,
 il migliore algoritmo per il pathfinding, ovvero la ricerca di un percorso
in un labirinto ad ostacoli, č A*. Un altra valida alternativa č il
Dijkstra, puoi trovare nella rete informazioni molto dettagliate a questo
proposito. Tuttavia entrambi gli algoritmi abbracciano la teoria dei grafi,
se invece tu intendi realizzare qualcosa di piů semplice puoi sempre contare
sugli algoritmi di path find On Move (ossia elementari). Per esempio,
considera una mappa a forma di griglia dove esistono blocchi di dimensione
fissa che possono essere liberi o vuoti, un punto di partenza A ed uno di
arrivo G. Devi calcolare la traiettorie per portare il punto da a verso G in
modo lineare. In poche parole devi eseguire questi calcoli:
 dist = radice quadrata di ((B.x - A.x)^2 + (B.y - A.y)^2)
 sx = Ax
 sy = Ay
 stepx = (B.x - A.x) / dist
 stepx = (B.y - A.y) / dist
successivamente con un ciclo while ( = esegui fino a che) procedi sino a
destinzazione di passo in passo:
while (A diverso da B)
    sx = sx + stepx
    sy = sy + stepy
wend
Questo algoritmo funziona solo se non ci sono ostacoli. Occorre inserire un
altro pezzo di codice in modo da realizzare il Random Search On Move.
Inserisci un test per verificare la presenza di ostacoli, se ne trovi uno,
retrocedi di un passo (sx = sx - stepx; sy = sy - stepy), dopo di che muovi
il blocco verso direzioni casuali e limitrofe (Per esempio sx = sx +
Random(-1, 1); sy = sy + Random(-1, 1) ). Se la nuova posizione č libera,
ricalcoli la traiettoria con le formule precedenti e ricominci a proseguire
verso il traguardo con il solito ciclo. L'algoritmo non funziona solo in
caso di ostacoli dalla forma concava.
Per un esame č il piů semplice. Te lo consiglio
Ciao,
 Andrea

 costruire un algoritmo che risolva un labirinto.
Ciao una possibile soluzione č quella di fare delle mosse in ogni direzione
dal punto in cui ti trovi (per mosse intendo spostamenti di una casella in
una certa direzione). e nel caso in cui ti trovi sulla casella in cui č
situata l'uscita concludere il ciclo/ricorsione.
ps fai attenzione a non ripassare sulle stesse caselle: il programma
potrebbe andare in loop. ti faccio un esempio se dalla posizione 1,0 vado
nella pos 1,1
e dalla 1,1 alla 1,0 rischio di andare di nuovo in 1,1 e cosi
all'infinito!!!
pps se fai parte del gruppo A-L o M-Z??? :-).

 pps se fai parte del gruppo A-L o M-Z??? :-).
che università ?

> che università ?
Non credo che scheme si usi anche fuori dall'università di Bologna.
e cmq anche se così fosse lo stesso progetto d'esame mi sembra esagerato.
:)
Ps. è G,g il mio nome Localhost deriva da un errata configurazione di
outlook
dovuta alla Lez. di Davoli®. ^_^

pps se fai parte del gruppo A-L o M-Z??? :-).
Cosi' a occhio, direi A-L :-)
Leonardo ovvio
-- 
".signature": bad command or file name

 ha scritto nel messaggio
news:130Z136Z4Z25Y9...@usenet.iol.it...


 ha scritto nel messaggio
news:130Z136Z4Z25Y9...@usenet.iol.it...
