Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Labyrinth die 2.

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
11.09.2003, 13:54 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Ich bin jetzt bei 241
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
15.09.2003, 14:09 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


So hier ist meine Lösung

C++:
struct koordinate{int xwert;int ywert;};
void path_finder(int xdim,int ydim,int** &lab){
int feasible,wegpunkt=0;
koordinate aktuell;
koordinate *weg;
    
    //Speicher für den Weg allokieren, Weg ist kleiner als width*height/2
    weg=new koordinate[xdim*ydim/2];

    //Startinitialisierung
    for(feasible=0;feasible<xdim && lab[feasible][0]==0;++feasible);
    weg[0].xwert=aktuell.xwert=feasible;
    weg[0].ywert=aktuell.ywert=0;
    lab[aktuell.xwert][aktuell.ywert]=3;
    
    feasible=1;
    while(aktuell.ywert!=ydim-1){

        if(!feasible){//Backtracking
            lab[aktuell.xwert][aktuell.ywert]=2;
            wegpunkt--;
            aktuell.xwert=weg[wegpunkt].xwert;
            aktuell.ywert=weg[wegpunkt].ywert;
        }
        
        feasible=0;
        if     (lab[aktuell.xwert][aktuell.ywert+1]==1){aktuell.ywert++;feasible=1;}
        else if(lab[aktuell.xwert-1][aktuell.ywert]==1){aktuell.xwert--;feasible=1;}
        else if(lab[aktuell.xwert+1][aktuell.ywert]==1){aktuell.xwert++;feasible=1;}
        else if(lab[aktuell.xwert][aktuell.ywert-1]==1){aktuell.ywert--;feasible=1;}
            
            
        if(feasible){        //Zum naechsten neuen Punkt gehen
            wegpunkt++;
            weg[wegpunkt].xwert=aktuell.xwert;
            weg[wegpunkt].ywert=aktuell.ywert;
            lab[aktuell.xwert][aktuell.ywert]=3;
        }
                
    }
    delete [] weg;
}



fals jemand Lust hat kann er ja noch versuchen eine Golfversion anzubieten
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 15.09.2003 um 14:10 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
20.09.2003, 19:35 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Hier ist meine Golflösung

C++:
int b,f,p;path_finder(int x,int y,int**l){for(int*w=new int[x*y--];!*l[--x];);for(*l[x]=3;y-b;f?l[w[p+=2]=x][w[p+1]=b]=3:f,!f?l[x][b]=2,x=w[p-=2],b=w[p+1]:f=0)l[x][++b]-1?l[--x][--b]-1?l[++x][--b]-1?l[++x][++b]-1?--x:++f:++f:++f:++f;}


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: