Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - erest0r

#151
Redes / Re: No puedo acceder a las paginas web
30 Marzo 2014, 06:37 AM
Aqui esta mejor





Acabo de hacer ping por lo menos a facebook y alli me dice "Tiempo de espera agotado para esta solicitud, 4 paquetes perdidos"
#152
Redes / Re: No puedo acceder a las paginas web
30 Marzo 2014, 06:31 AM
4 paquetes enviados, 4 paquetes recibidos

Tiempo aproximado de ida y vuelta en milisegundos:

minimo 231, maximo 254, media 244
#153
Redes / Re: No puedo acceder a las paginas web
30 Marzo 2014, 06:18 AM
Bueno primera vez que me sucede esto, y agradeceria que me explicaran al menos, entre en las conexiones de red, en propiedades protocolo TCP/IPv4

servidor DNS preferido      8.8.8.8
servidor DNS alternativo    8.8.4.4

Y aun asi no me puedo conectar, sigue el problema =/
#154
Redes / No puedo acceder a las paginas web
30 Marzo 2014, 06:04 AM
Hola que tal, hoy se me fue la luz y cuando trate de entrar de nuevo a navegar no podia acceder a la mayoria de las paginas web, en estos momentos uso Tor el cual es el unico que me permite poder acceder a todas las paginas ,ni chrome, ni firefox, ni internet explorer me permiten acceder a ellas, no se si sea que el router se desconfiguro, aunque ya lo configure como de fabrica y en realidad no se a que se deba esto =/ agradeceria mucho que me ayuden.
#155
Gracias amchacon, ya vi como poder entrarle al ejercicio
#156
Eso depende del escenario, para un juego es otra cosa, son distintas reglas
#157
Si pero es que un algoritmo que busque aleatoriamente podria tardar una eternidad en recorrer todo el laberinto, redundando en caminos que ya hubiese pasado anteriormente
#158
Viendo ejemplos de códigos recursivos logre modificar mi programa ( hice que la función retornara valores, y modifique los if ), ahora el programa si busca caminos alternativos, pero aun asi existen caminos que no recorre, en el caso de mi laberinto, si a la posicion que deberia ser la salida lo hago un obstaculo, al programa le quedarían 2 caminos por verificar

Coloco todo el codigo de nuevo porque hice algun cambio en main

Código (cpp) [Seleccionar]

#include <stdio.h>
#include <stdlib.h>     // Para usar funcion de limpiar pantalla
#include <windows.h>    // Para usar funcion de hacer pausa
#define TAM_FIL 12
#define TAM_COL 12

typedef struct
{
    int estaEnFinal; //------------------- Para saber si llego al final el objeto
    char simbolo;
    int pos_x; //------------------------- Coordenada del objeto en X
    int pos_y; //------------------------- Coordenada del objeto en Y
}Objeto;

typedef struct
{
    // ----------------------------------- Simplemente para saber las coordenadas de los puntos X e Y de inicio y fin del laberinto ------------------------------------

    int ini_fil;
    int ini_col;
    int fin_fil;
    int fin_col;
}InformacionMapa;

void mostrarEstadoMapa( char laberinto[][TAM_COL] );
int recorrerLaberinto( char laberinto[][TAM_COL], InformacionMapa *punto, Objeto obj );

int main( int argc, char* args[] )
{


    InformacionMapa mapa;
    mapa.ini_fil = 2;
    mapa.ini_col = 0;
    mapa.fin_fil = 4;
    mapa.fin_col = 11;

    Objeto obj;
    obj.simbolo = 'X';
    obj.estaEnFinal = 0;
    obj.pos_x = 2;
    obj.pos_y = 0;

    char laberinto[TAM_FIL][TAM_COL] = { '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#',
                                         '#', ' ', ' ', ' ', '#', ' ', ' ', ' ', ' ', ' ', ' ', '#',
                                         ' ', ' ', '#', ' ', '#', ' ', '#', '#', '#', '#', ' ', '#',
                                         '#', '#', '#', ' ', '#', ' ', ' ', ' ', ' ', '#', ' ', '#',
                                         '#', ' ', ' ', ' ', ' ', '#', '#', '#', ' ', ' ', ' ', ' ',
                                         '#', '#', '#', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#',
                                         '#', ' ', ' ', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#',
                                         '#', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#',
                                         '#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#', ' ', '#',
                                         '#', '#', '#', '#', '#', '#', ' ', '#', '#', '#', ' ', '#',
                                         '#', ' ', ' ', ' ', ' ', ' ', ' ', '#', ' ', ' ', ' ', '#',
                                         '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#'
                                       };

    if( recorrerLaberinto( laberinto, &mapa, obj ) == 1 )
        printf("\n\n\nFinal del laberinto encontrado");
    else
        printf("\n\n\nNo hay salida en este laberinto.");

    getchar();
return 0;
}

void mostrarEstadoMapa( char laberinto[][TAM_COL] )
{
    int cont_fil, cont_col;

    system("cls");
    for( cont_fil = 0; cont_fil < TAM_FIL; cont_fil++ )
    {
        for( cont_col = 0; cont_col < TAM_COL; cont_col++ )
        {
            printf("%c", laberinto[cont_fil][cont_col]);
            printf("  ");
        }

        printf("\n\n");
    }
    Sleep(200);
}

int recorrerLaberinto( char laberinto[][TAM_COL], InformacionMapa *mapa, Objeto obj )
{

    if( obj.pos_x == mapa->fin_fil && obj.pos_y == mapa->fin_col )
    {
        obj.estaEnFinal++;
        return 1;
    }

    laberinto[obj.pos_x][obj.pos_y] = obj.simbolo;

    mostrarEstadoMapa( laberinto );

    if( laberinto[obj.pos_x][obj.pos_y + 1] == ' ' && obj.pos_y + 1 < TAM_COL )
    {
        obj.pos_y++;
        if( recorrerLaberinto( laberinto, mapa, obj ) == 1 )
            return 1;
    }

    if( laberinto[obj.pos_x + 1][obj.pos_y] == ' ' && obj.pos_x + 1 < TAM_FIL )
    {
        obj.pos_x++;
        if( recorrerLaberinto( laberinto, mapa, obj ) == 1 )
            return 1;
    }

    if( laberinto[obj.pos_x - 1][obj.pos_y] == ' ' && obj.pos_x - 1 >= 0 )
    {
        obj.pos_x--;
        if( recorrerLaberinto( laberinto, mapa, obj ) == 1 )
            return 1;
    }

    if( laberinto[obj.pos_x][obj.pos_y - 1] == ' ' && obj.pos_y - 1 >= 0 )
    {
        obj.pos_y--;
        if( recorrerLaberinto( laberinto, mapa, obj ) == 1 )
            return 1;
    }

    return 0;
}

#159
El using namespace std; si fue un descuido se me habia olvidado borrar esa linea, solo que cuando intente modificar el post cuando le daba previsualizar me mostraba algunos caracteres raros y lo deje asi y bueno estaba intentando resolverlo con recursividad, la linea

Código (cpp) [Seleccionar]
if( laberinto[obj->pos_x][obj->pos_y + 1] != '#' && laberinto[obj->pos_x][obj->pos_y + 1] != obj->simbolo )

Simplemente la use para saber si cuando el objeto se mueva a la posicion siguiente no haya obstaculo '#' o no esté ya su simbolo (indicando que ya paso por alli), pero como dije, los problemas de recursividad me cuestan pensarlos.
#160
Hola, aqui les traigo un problema que estoy haciendo sobre, dado un laberinto de 12 x 12 usar la regla de la mano derecha para conseguir la salida del laberinto e indicar si hay salida o no, como tal el programa corre y si encuentra la salida, pero no se si lo esta haciendo de la mejor manera, he aqui el codigo:

Código (cpp) [Seleccionar]

#include <stdio.h>
#include <stdlib.h>     // Para usar funcion de limpiar pantalla
#include <windows.h>    // Para usar funcion de hacer pausa
#define TAM_FIL 12
#define TAM_COL 12

using namespace std;

typedef struct
{
   int estaEnInicio, estaEnFinal; //----- Para saber cuantas veces nuestro objeto ha estado en el inicio y si esta en el final
   char simbolo;
   int pos_x; //------------------------- Coordenada del objeto en X
   int pos_y; //------------------------- Coordenada del objeto en Y
}Objeto;

typedef struct
{
   // ----------------------------------- Simplemente para saber las coordenadas de los puntos X e Y de inicio y fin del laberinto ------------------------------------

   int ini_fil;
   int ini_col;
   int fin_fil;
   int fin_col;
}InformacionMapa;

void mostrarEstadoMapa( char laberinto[][TAM_COL] );
void recorrerLaberinto( char laberinto[][TAM_COL], InformacionMapa *punto, Objeto *obj );

int main( int argc, char* args[] )
{

   int cont_fil, cont_col;

   InformacionMapa mapa;
   mapa.ini_fil = 2;
   mapa.ini_col = 0;
   mapa.fin_fil = 4;
   mapa.fin_col = 11;

   Objeto obj;
   obj.simbolo = 'X';
   obj.estaEnInicio = 0;
   obj.estaEnFinal = 0;
   obj.pos_x = 2;
   obj.pos_y = 0;

   char laberinto[TAM_FIL][TAM_COL] = { '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#',
                                        '#', ' ', ' ', ' ', '#', ' ', ' ', ' ', ' ', ' ', ' ', '#',
                                        ' ', ' ', '#', ' ', '#', ' ', '#', '#', '#', '#', ' ', '#',
                                        '#', '#', '#', ' ', '#', ' ', ' ', ' ', ' ', '#', ' ', '#',
                                        '#', ' ', ' ', ' ', ' ', '#', '#', '#', ' ', ' ', ' ', ' ',
                                        '#', '#', '#', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#',
                                        '#', ' ', ' ', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#',
                                        '#', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#',
                                        '#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#', ' ', '#',
                                        '#', '#', '#', '#', '#', '#', ' ', '#', '#', '#', ' ', '#',
                                        '#', ' ', ' ', ' ', ' ', ' ', ' ', '#', ' ', ' ', ' ', '#',
                                        '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#'
                                      };

   recorrerLaberinto( laberinto, &mapa, &obj );

   getchar();
return 0;
}

void mostrarEstadoMapa( char laberinto[][TAM_COL] )
{
   int cont_fil, cont_col;

   system("cls");
   for( cont_fil = 0; cont_fil < TAM_FIL; cont_fil++ )
   {
       for( cont_col = 0; cont_col < TAM_COL; cont_col++ )
       {
           printf("%c", laberinto[cont_fil][cont_col]);
           printf("  ");
       }

       printf("\n\n");
   }
   Sleep(500);
}

void recorrerLaberinto( char laberinto[][TAM_COL], InformacionMapa *mapa, Objeto *obj )
{

   if( obj->pos_x == mapa->ini_fil && obj->pos_y == mapa->ini_col )
       obj->estaEnInicio++;
   else if( obj->pos_x == mapa->fin_fil && obj->pos_y == mapa->fin_col )
       obj->estaEnFinal++;

   while( laberinto[4][11] != obj->simbolo && obj->estaEnInicio == 1 && !obj->estaEnFinal )
   {
       laberinto[obj->pos_x][obj->pos_y] = obj->simbolo;

       mostrarEstadoMapa( laberinto );

       if( laberinto[obj->pos_x][obj->pos_y + 1] != '#' && laberinto[obj->pos_x][obj->pos_y + 1] != obj->simbolo )
       {
           obj->pos_y++;
           recorrerLaberinto( laberinto, mapa, obj );
       }
       else if( laberinto[obj->pos_x + 1][obj->pos_y] != '#' && laberinto[obj->pos_x + 1][obj->pos_y] != obj->simbolo )
       {
           obj->pos_x++;
           recorrerLaberinto( laberinto, mapa, obj );
       }
       else if( laberinto[obj->pos_x - 1][obj->pos_y] != '#' && laberinto[obj->pos_x - 1][obj->pos_y] != obj->simbolo )
       {
           obj->pos_x--;
           recorrerLaberinto( laberinto, mapa, obj );
       }
       else if( laberinto[obj->pos_x][obj->pos_y - 1] != '#' && laberinto[obj->pos_x][obj->pos_y - 1] != obj->simbolo )
       {
           obj->pos_y--;
           recorrerLaberinto( laberinto, mapa, obj );
       }
       else if( laberinto[obj->pos_x][obj->pos_y - 1] != '#' )
       {
           obj->pos_y--;
           recorrerLaberinto( laberinto, mapa, obj );
       }
       else if( laberinto[obj->pos_x - 1][obj->pos_y] != '#' )
       {
           obj->pos_x--;
           recorrerLaberinto( laberinto, mapa, obj );
       }
       else if( laberinto[obj->pos_x + 1][obj->pos_y] != '#' )
       {
           obj->pos_x++;
           recorrerLaberinto( laberinto, mapa, obj );
       }
       else if( laberinto[obj->pos_x][obj->pos_y + 1] != '#' )
       {
           obj->pos_y++;
           recorrerLaberinto( laberinto, mapa, obj );
       }

   }

   if( obj->estaEnInicio > 1 )
       printf("\n\n\nNo hay salida en este laberinto.");
   if( obj->estaEnFinal )
       printf("\n\n\nFinal del laberinto encontrado");
}


Disculpen el exceso de if-else xD, debo mejorar esa parte.

Nota: Aun no lo he probado con un laberinto distinto con punto de partida y fin distintos.




He probado quitandole la salida y alli si que no hace la busqueda por todas las posibles rutas del laberinto, aunque se que esto seria un problema de backtracking, yo no soy muy experto cuando se trata de recursividad jeje