sábado, 25 de mayo de 2013
Tarea Generar Sucesores y Mostrar Puzzle
Código que dado al ingresar un string (ej: 123045678) que emula un puzzle8 con cualquier estado inicial entrega los estados hijos (nodos hijos) dado por los posibles movimientos permitidos.
package puzzle8;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
class Puzzle8 {
Queue<String> nodos = new LinkedList<String>();
Integer i = 0;
public static void main(String args[]){
System.out.println ("Ingrese Valores:");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
Puzzle8 e = new Puzzle8();
e.printPuzzle(str);//IMPRIME ESTADO INICIAL
e.generaSucesores(e, str);
}
void generaSucesores(Puzzle8 e, String str) {
//ARRIBA
int a = str.indexOf("0");
if(a>2){
String nextState = str.substring(0,a-3)+"0"+str.substring(a-2,a)+str.charAt(a-3)+str.substring(a+1);
printPuzzle(nextState);
}
//ABAJO
if(a<6){
String nextState = str.substring(0,a)+str.substring(a+3,a+4)+str.substring(a+1,a+3)+"0"+str.substring(a+4);
printPuzzle(nextState);
}
//IZQUIERDA
if(a!=0 && a!=3 && a!=6){
String nextState = str.substring(0,a-1)+"0"+str.charAt(a-1)+str.substring(a+1);
printPuzzle(nextState);
}
//DERECHA
if(a!=2 && a!=5 && a!=8){
String nextState = str.substring(0,a)+str.charAt(a+1)+"0"+str.substring(a+2);
printPuzzle(nextState);
}
}
private void printPuzzle(String puzzle) {
if(i==0){
System.out.println("-------");
System.out.println("Estado Inicial:");
} else {
System.out.println("Nodo Hijo:" + i);
}
System.out.println(puzzle.substring(0,1)+"|"+ puzzle.substring(1,2)+"|"+ puzzle.substring(2,3));
System.out.println(puzzle.substring(3,4)+"|"+ puzzle.substring(4,5)+"|"+ puzzle.substring(5,6));
System.out.println(puzzle.substring(6,7)+"|"+ puzzle.substring(7,8)+"|"+ puzzle.substring(8,9));
System.out.println("-------");
i = i + 1;
}
}
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario