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;
    }
}


No hay comentarios:

Publicar un comentario