Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-07-2010, 14:10   #1
mic85rm
Senior Member
 
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1629
[c] labirinto...

salve ragazzi ho un problema con un progetto che consiste nel trovare l'uscita di un labirinto.

ho un entrata sulla "cornice" del labirinto mentre l'uscita puo trovarsi dappertutto tranne che negli "spigoli".

In poche parole mi sono creato una matrice allocata dinamicamente e riempita a random...

il mio "algoritmo" di soluzione pero' ha delle pecche...

1)se l'uscita è circondata da muri(ma non nelle celle adiacenti)come lo gestisco?
2)se dall'entrata all'uscita non esiste un percorso come faccio a far terminare l'algoritmo?
mic85rm è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2010, 15:41   #2
lupoxxx87
Senior Member
 
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
lavora con algoritmi di visita su grafi, come quello di dijkstra.
se arrivi all'uscita vuol dire che è raggiungibile, se non ci arrivi vuol dire che sei in uno dei due casi che hai scritto
__________________
Quote:
Originariamente inviato da piccolino Guarda i messaggi
l'html si può considerare benissimo un linguaggio di programmazione web. se vogliamo dirla tutta anche css... è come programmare in c++
lupoxxx87 è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2010, 16:05   #3
mic85rm
Senior Member
 
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1629
grazie lupoxxx87...

altre soluzioni possibili?

io stavo utilizzando il principio della mano destra....

Ultima modifica di mic85rm : 19-07-2010 alle 16:28.
mic85rm è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2010, 15:01   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da mic85rm Guarda i messaggi
se dall'entrata all'uscita non esiste un percorso come faccio a far terminare l'algoritmo?
Quote:
Originariamente inviato da mic85rm Guarda i messaggi
io stavo utilizzando il pincipio della mano destra...
In tal caso, secondo quell'algoritmo, cito:
Quote:
...nel caso particolare di una sola uscita, l'algoritmo conduce a un vicolo cieco, dal quale si ritorna al punto di partenza semplicemente continuando a seguire la parete prescelta.
Dove con "una sola uscita" intende che è presente solo l'entrata (che è quindi anche l'unica uscita).

In teoria, per ogni uscita che trovi con quet'algoritmo devi dunque verificare che non sia l'entrata. Se c'è solo un'uscita in tutto il labirinto per definizione coincide con l'entrata.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2010, 13:02   #5
mic85rm
Senior Member
 
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1629
mi puoi dare il link con la spiegazione di questo algoritmo...sul mio libro è spiegato in modo sbrigativo...grazie
mic85rm è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2010, 13:27   #6
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
http://tinyurl.com/2bnsrkr
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2010, 13:32   #7
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da mic85rm Guarda i messaggi
mi puoi dare il link con la spiegazione di questo algoritmo...sul mio libro è spiegato in modo sbrigativo...grazie
A dire il vero ho solo consultato il web: fatalità un link di wikipedia.
Guarda anche questo per altre idee: link, dovrebbe essere abbastanza per implementare un tuo metodo, ciao
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2010, 21:32   #8
mic85rm
Senior Member
 
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1629
ragazzi se vi posto il codice sorgente gli date un occhiata?
mic85rm è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2010, 22:18   #9
mic85rm
Senior Member
 
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1629
eccolo...accetto critiche consigli fatevi sotto
Allegati
File Type: zip progetto.zip (4.4 KB, 10 visite)

Ultima modifica di mic85rm : 26-08-2010 alle 14:31.
mic85rm è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2010, 22:44   #10
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
di sicuro ti consiglio di migliorare la leggibilità del codice
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2010, 23:19   #11
mic85rm
Senior Member
 
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1629
il codice è indentato..che altro posso fare?
mic85rm è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2010, 23:34   #12
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
indentato? :E


Ultima modifica di tuccio` : 26-08-2010 alle 14:54.
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2010, 14:31   #13
mic85rm
Senior Member
 
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1629
aggiornato...
mic85rm è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2010, 22:09   #14
mic85rm
Senior Member
 
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1629
buttateci un occhio e 2 minuti del vostro tempo

se qualcuno è di roma offro caffe' e birra a scelta
mic85rm è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2010, 00:56   #15
Opcode
Member
 
L'Avatar di Opcode
 
Iscritto dal: Jun 2010
Città: Asti
Messaggi: 85
Se hai modo di verificare se una dato nodo (zona in cui muovere) è transitabile oppure rappresenta il muro, ovvero zona non transitabile, potresti pensare ad un algoritmo di ricerca, che si scorre tutti i possibili nodi, e trovato quello transitabile procede a trovare quello successivo.

Un esempio è quello proposto da lupo ovvero Dijkstra, altrimenti ti propongo A*
Comunque di questo tipo di algoritmi ne esistono molti, su wikipedia o su google ne trovi sicuramente molti altri.
Opcode è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2010, 23:33   #16
mic85rm
Senior Member
 
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1629
grazie opcode...

ma io chiedevo se potevate dare uno sguardo al mio codice al fine di ripulirlo migliorarlo ecc...
mic85rm è offline   Rispondi citando il messaggio o parte di esso
Old 10-09-2010, 22:57   #17
mic85rm
Senior Member
 
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1629
Codice:
int percorso(char **m,int x,int y,int p_lrig,int p_lcol)
{
 // printf("[%d][%d]",x,y);
 int inizio=0,exit=0;
 int i,j;
 if ((x==0)&&(m[x+1][y]!=SIMBOLO_MURO))
  {
   x++;
   m[x][y]=SIMBOLO_CAMMINO;
   inizio=1;
  }//cerco di capire dove è l'entrata in modo da forzare il primo passo nell'unica direzione possibile
 if ((y==0)&&(m[x][y+1]!=SIMBOLO_MURO))
  {
   y++;
   m[x][y]=SIMBOLO_CAMMINO;
   inizio=2;
  }
 if ((y==p_lcol-1)&&(m[x][y-1]!=SIMBOLO_MURO))
  {
   y--;
   m[x][y]=SIMBOLO_CAMMINO;
   inizio=3;
  }
 if ((x==p_lrig-1)&&(m[x-1][y]!=SIMBOLO_MURO))
  {
   x--;
   m[x][y]=SIMBOLO_CAMMINO;
   inizio=4;
  }
  //getch(); //per controllare se il primo passaggio è ok
    //printf("f[%d]f[%d]-%d",x,y,inizio);
 while((exit==0)&&(!(GetAsyncKeyState(27) < 0))) //mi serve solo per provare a salvare i file
  {
   switch(inizio)
    {
     case 1://da su a giu
          switch(m[x+1][y]){
                            case SIMBOLO_VUOTO:
                                 m[x+1][y]=SIMBOLO_CAMMINO;
                                 x++;
                                 inizio=1;
                                 break;
                            case SIMBOLO_MURO:
                                 inizio=3;
                                 break;
                            case SIMBOLO_CAMMINO:
                                 m[x+1][y]=SIMBOLO_NUOVO;
                                 x++;
                                 inizio=1;
                                 break;
                            case SIMBOLO_USCITA:
                                 printf("Uscita Trovata");
                                 exit=1;
                                 break;
                            case SIMBOLO_NUOVO:
                                 inizio=3;
                                 break;
                            case SIMBOLO_ENTRATA:
                                 inizio=3;
                                 break;     
                            }

     break;
     case 2:
          switch(m[x][y+1]){//da sx a dx
                            case SIMBOLO_VUOTO:m[x][y+1]='*';y++;inizio=2;break;
                            case SIMBOLO_MURO:inizio=1;break;
                            case SIMBOLO_CAMMINO:m[x][y+1]='@';y++;inizio=2;break;
                            case SIMBOLO_USCITA:printf("Uscita Trovata");exit=1;break;
                            case SIMBOLO_NUOVO:inizio=1;break;
                            case SIMBOLO_ENTRATA:
                                 inizio=1;
                                 break;     
                            }
              break;
     case 3:
          switch(m[x][y-1]){//da dx a sx
                            case SIMBOLO_VUOTO:m[x][y-1]='*';y--;inizio=3;break;
                            case SIMBOLO_MURO:inizio=4;break;
                            case SIMBOLO_CAMMINO:m[x][y-1]='@';y--;inizio=3;break;
                            case SIMBOLO_USCITA:printf("Uscita Trovata");exit=1;break;
                            case SIMBOLO_NUOVO:inizio=4;break;
                            case SIMBOLO_ENTRATA:
                                 inizio=4;
                                 break;     
                            }

     break;

                    case 4:   switch(m[x-1][y]){//da giu a su
                            case SIMBOLO_VUOTO:m[x-1][y]='*';x--;inizio=4;break;
                            case SIMBOLO_MURO:inizio=2;break;
                            case SIMBOLO_CAMMINO:
                                 m[x-1][y]='@';
                                 x--;
                                 inizio=4;
                                 break;
                            case SIMBOLO_USCITA:printf("Uscita Trovata");exit=1;break;
                            case SIMBOLO_NUOVO:inizio=2;break;
                            case SIMBOLO_ENTRATA:
                                 inizio=2;
                                 break;     
                            }
     break;



                    case 0:printf("Sei circondato da muri...GameOver");exit=1;break;
                    }
          
mostra_labirinto(m,p_lrig,p_lcol);

system("PAUSE");
                    }
     return 0;
     }

Ultima modifica di mic85rm : 10-09-2010 alle 22:59.
mic85rm è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Oracle NetSuite si potenzia con nuove fu...
Musica generata con l'IA: Sony lavora a ...
Cyberpunk 2077 in versione PC su smartph...
BYD si gioca un grosso jolly: pronta Rac...
Samsung annuncia l'arrivo in Italia dei ...
Offerta lancio Pixel 10a: come ottenere ...
Google presenta Pixel 10a: poche le novi...
Caos F1 2026: 14 monoposto senza omologa...
Tesla festeggia il primo Cybercab prodot...
Desktop piccolo e potente? NZXT H2 Flow ...
Polestar spinge sull'acceleratore: arriv...
Nuovo record mondiale nel fotovoltaico: ...
L'ultimo baluardo cade: fine supporto pe...
'Il mondo non ha mai visto nulla di simi...
La Commissione europea mette sotto indag...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:12.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v