Foro de elhacker.net

Programación => Java => Mensaje iniciado por: smasher666 en 28 Abril 2009, 09:23 am



Título: calcular distancia entre casillas en java?
Publicado por: smasher666 en 28 Abril 2009, 09:23 am
Hola, estamos haciendo un tribial y nos ha surjido el siguiente problema: como podriamos calcular la distancia entre 2 casillas contando que no puede pasar por casillas en blanco??
si alguien se le ocurre , no solo en codigo java sino que incluso con alguna formula matematica nos iria bien, gracias

tablero:
              private char[][] mapa = {{'v','b','t','D','r','m','G','v','b','D','t','r','M'},
                      {'g','m',' ',' ',' ',' ','m',' ',' ',' ',' ','t','g'},
                      {'m',' ','r',' ',' ',' ','r',' ',' ',' ','b',' ','v'},
                      {'D',' ',' ','t',' ',' ','D',' ',' ','v',' ',' ','D'},
                      {'t',' ',' ',' ','b',' ','t',' ','g',' ',' ',' ','b'},
                      {'r',' ',' ',' ',' ','g','b','r',' ',' ',' ',' ','t'},
                      {'O','g','M','D','b','v','U','m','r','D','t','b','O'},
                      {'v',' ',' ',' ',' ','v','g','t',' ',' ',' ',' ','b'},
                      {'g',' ',' ',' ','t',' ','m',' ','m',' ',' ',' ','m'},
                      {'D',' ',' ','r',' ',' ','D',' ',' ','g',' ',' ','D'},
                      {'m',' ','m',' ',' ',' ','b',' ',' ',' ','v',' ','g'},
                      {'r','g',' ',' ',' ',' ','v',' ',' ',' ',' ','b','v'},
                      {'B','t','r','D','m','g','T','b','v','D','m','g','R'},};

las casillas en blanco son chars vacios



Título: Re: calcular distancia entre casillas en java?
Publicado por: Sk9ITk5Z en 29 Abril 2009, 16:42 pm
oye a que te refieres con la distancia????


Título: Re: calcular distancia entre casillas en java?
Publicado por: juancho77 en 1 Mayo 2009, 01:16 am
Bien, no tienes un problema sencillo en frente. Te cuento que en programación existen Tipos de Datos llamados Mapas que simulan esto que tu quieres resolver. Deberias estudiarlos y te resultara mas sencillo.
Tambien puedes hacerlo por backtracking, agotando cada una de las posibilidades.
O tambien, y creo que lo mas sencillo, crear un mapa de grafos ponderados indicando la distancia entre cada uno y comparando entre ellos. Si es solo para ese mapa, es muy sencillo ya que los caminos son simetricos los mires por donde los mires.

Por ejemplo, si implementas una estructura que tenga un Nodo de Grafo por cada casilla permitida, la solución sería saltar desde el nodo inicial al siguiente, y de alli evaluar para donde seguir basandonse en x e y y la variacion. Una vez finalizado, guardamos y volvemos atras (backtracking), y empezamos de nuevo en otra direccion.
Al final, tomamos todo lo guardado y comparamos. El menor es la distancia minima entre los Nodos de Grafo.

Como dije, no es algo sencillo. Hay implementaciones mas rapidas tambien, pero no tan comunes e interesantes.


Título: Re: calcular distancia entre casillas en java?
Publicado por: smasher666 en 3 Mayo 2009, 18:50 pm
gracias juancho voy a estudiar ambos casos y luego te cuento ;)