PDA

View Full Version : Piccolo Problema...SFIDA.... :)


leadergl
27-12-2003, 14:06
Raga, vi posto questa piccola situazione da risolvere con qualsiasi linguaggio di programmazione.......vediamo chi ne ha voglia......la sfida stà nel trovare l'algoritmo più BREVE ed EFFICIENTE:


Un robot, situato inizialmente in una posizione di coordinate X,Y di una matrice quadrata, può muoversi di un passo alla volta nelle quattro direzioni cardinali: avanti, indietro, destra e sinistra.

Data una costante TMax, (che rappresenta la durata della 'vita' del robot) :

1 - Definire un punto di partenza e uno o più punti differenti di arrivo: scrivere una procedura che permetta al robot di spostarsi in maniera 'intelligente' dal luogo in cui si trova in un luogo prefissato, continuando a decrementare di uno il valore della sua 'vita' dopo ogni spostamento elementare.

2 - Utilizziamo ora un generatore casuale per introdurre nella matrice un certo numero K1 di ostacoli. E potenziamo il robot dandogli la capacità' di 'vedere' gli ostacoli fino a un intorno completo di 2

3 - si utilizzi ancora un generatore casuale per introdurre in K2 posizioni della matrice del cibo per il robot.
Il robot inizialmente è affamato ed ha la capacità di distinguere il cibo dagli ostacoli; se 'vede' del cibo allora, e solo allora, tenderà a spostarsi sul cibo e mangiarlo, altrimenti si muoverà secondo la strategia precedentemente fissata evitando gli ostacoli.
Dopo aver mangiato del cibo la sua 'vita' aumenterà di un valore M prefissato, ma, per un periodo di T mosse, non avendo più fame, continuerà a spostarsi casualmente non distinguendo il cibo dagli ostacoli.

NB Il programma termina quando si azzera la 'vita' del robot oppure l’obiettivo è stato raggiunto.
:)

leadergl
27-12-2003, 14:07
l'ho postato qui perchè mi è stato proposto da amici..........e quindi siccome è noioso senza essere spronati.....beh così facciamo a chi fa prima e meglio...............

a2000
27-12-2003, 17:31
.

leadergl
27-12-2003, 17:38
divertente....ma

1 - NON deve andare su caselle su cui è già stato
2 - CI DEVE essere un punto di arrivo a cui tendere

altrimenti bastava fare qualcosa casuale e via.....invece no...e "possibilmente" non deve tornare su caselle in cui è già stato in un arco di 10 mosse..và!!!

e sarebbe più bello postare i propri traguardi qui sul forum...

abxide
27-12-2003, 17:44
Sbaglio o questo è il progetto di programmazione mod B dell'università federico II?:D

a2000
27-12-2003, 17:48
Originariamente inviato da leadergl
divertente....ma

1 - NON deve andare su caselle su cui è già stato
2 - CI DEVE essere un punto di arrivo a cui tendere

altrimenti bastava fare qualcosa casuale e via.....invece no...e "possibilmente" non deve tornare su caselle in cui è già stato in un arco di 10 mosse..và!!!

e sarebbe più bello postare i propri traguardi qui sul forum...

dettagli parametrici già inclusi nell'algoritmo. :cool:

a2000
27-12-2003, 17:50
algoritmo di tipo attrattivo-repulsivo siluppato per problema analogo esposto sul forum qualche sospensione ... ehm ... mese fa :D

a2000
27-12-2003, 17:54
notare che il motore è di 50 righe riducibili a ... 20 !

e viaggia.

a2000
27-12-2003, 17:55
adesso vado a montare la Beak Spider :)

cionci
27-12-2003, 17:58
Però non vale :ncomment: Ce l'avevi già pronto !!! :)

leadergl
27-12-2003, 20:44
Originariamente inviato da abxide
Sbaglio o questo è il progetto di programmazione mod B dell'università federico II?:D


non saprei dirti.....ma se così fosse, my friends possono anke dimenticarsi che io glielo passi........aspetterò che facciano l'esame per passare il compitino, se vogliono delucidazioni su qualcosa, OK....ma se "io" (me e voi...specie voi visto k siete decisamente più bravi di me) dobbiamo fargli il progetto....beh stanno freschi!!!

Originariamente inviato da a2000
dettagli parametrici già inclusi nell'algoritmo.

si ma quel programma k mi hai dato nn ha una meta.....anzi vaga solo nella ricerca di cibo.......invece serve UNA META DA RAGGIUNGERE....e da raggiungere nel minor numero di mosse possibili !! eheh


Io stavo cominciando a fare un "algoritmo" che generava una mossa casuale (un random da 1 a 4..a cui corrispondevano le direzioni) e poi controllavo se:

1 - se uscivo dalla matrice --> allora ripetevo
2 - se c'erano ostacoli da evitare
3 - se mi avvicinavo all'obiettivo

...in maniera ricorsiva........ma così mi si mangiava lo stack in niente quasi........è sto provando in maniera iterativa....anke se non sono per niente soddisfatto.........vorrei fare qualcosa di professionale....

a2000
27-12-2003, 20:47
Originariamente inviato da cionci
Però non vale :ncomment: Ce l'avevi già pronto !!! :)
eh, va beh ... però l'avevo preparato appositamente per un altro thread del forum.

ti piace il pacman ? :D

a2000
27-12-2003, 21:00
Originariamente inviato da leadergl
non saprei dirti.....ma se così fosse, my friends possono anke dimenticarsi che io glielo passi........aspetterò che facciano l'esame per passare il compitino, se vogliono delucidazioni su qualcosa, OK....ma se "io" (me e voi...specie voi visto k siete decisamente più bravi di me) dobbiamo fargli il progetto....beh stanno freschi!!!



si ma quel programma k mi hai dato nn ha una meta.....anzi vaga solo nella ricerca di cibo.......invece serve UNA META DA RAGGIUNGERE....e da raggiungere nel minor numero di mosse possibili !! eheh


Io stavo cominciando a fare un "algoritmo" che generava una mossa casuale (un random da 1 a 4..a cui corrispondevano le direzioni) e poi controllavo se:

1 - se uscivo dalla matrice --> allora ripetevo
2 - se c'erano ostacoli da evitare
3 - se mi avvicinavo all'obiettivo

...in maniera ricorsiva........ma così mi si mangiava lo stack in niente quasi........è sto provando in maniera iterativa....anke se non sono per niente soddisfatto.........vorrei fare qualcosa di professionale....

ma schiusa cosa vuoi mete, ostacoli, cibo e ricursività.
vedila sinteticamente così: il pacman si muove in un campo di forze attrattive (cibo e meta finale) e repulsive (ostacoli, celle già visitate e predatori volendo ... ) che dipendono dalla distanza (nel caso proposto dopo due caselle le forze vanno a zero).
Ad ogni passo si sposta nella direzione in cui la forza è massima (positiva).

Cioè si comporta in analogia (parametrizzata a piacere tuo) a un elettrone in un campo elettrico determinato da cariche elettriche positive e negative.

o se vuoi come un animale che ha il problema di:
1) mangiare
2) evitare gli ostacoli
3) sfuggire ai predatori
4) e soprattutto andare a figa (meta finale) !!! :D

poi lo puoi dotare di una qualche forma di intelligenza meno istintiva (figa, figa figa e poi più) facendogli costruire una rappresentazione del suo mondo man mano che lo percorre.

io comunque sono per l'istinto puro! :oink:

cionci
27-12-2003, 21:31
Originariamente inviato da a2000
4) e soprattutto andare a figa (meta finale) !!!
A parte il linguaggio colorito...a2000 ha perfettamente ragione....
La meta finale semplicemente è un campo di forze atrattive decisamente più forti delle altre ;)

abxide
27-12-2003, 22:11
Originariamente inviato da leadergl
non saprei dirti.....ma se così fosse, my friends possono anke dimenticarsi che io glielo passi........aspetterò che facciano l'esame per passare il compitino, se vogliono delucidazioni su qualcosa, OK....ma se "io" (me e voi...specie voi visto k siete decisamente più bravi di me) dobbiamo fargli il progetto....beh stanno freschi!!!

Beh guarda se questi tuoi amici sono di napoli e sono iscritti al corso di laurea in informatica alla federico II è il progetto da prensetare all'esame di programmazione mod B. Comunque è quasi sicuramente quello, lo riconosco dalla traccia :)

Hall999
28-12-2003, 00:05
Originariamente inviato da abxide
Beh guarda se questi tuoi amici sono di napoli e sono iscritti al corso di laurea in informatica alla federico II è il progetto da prensetare all'esame di programmazione mod B. Comunque è quasi sicuramente quello, lo riconosco dalla traccia :)
mi sa che e' propio per lui l'esercizio
:)

leadergl
28-12-2003, 04:07
Originariamente inviato da Hall999
mi sa che e' propio per lui l'esercizio
:)


mi spiace per te ma non devo farlo quell'esame........programmazione è roba vecchia....!!!

sto impegnato in Calcolo Numerico e altre cazzate.... ;) :D :cool: