Dudas de Programacion » Java » Java Básico

ayuda con sudoku para java

(3 posts)
  1. hola gente estoi aprendiendo a programar en java , y tengo que implementar el juego del sudoku ,pero me e quedado atascado.A la ora de insertar un elemento compruebo q ese elemento no esta en la fila q lo quiero insertar , ni en la columna , ni en el subcuadro correspondiente ,e aqui mi duda,como puedo saber donde empieza el subcuadro (son conocidas la longitud de los subcuadros) ,nose si me explico.

    yo lo intente de esta forma

    private boolean comprobarSubTableros(int fila,int columna,int elemento ){
           boolean existe=false;
           int posIniX=fila-(fila%subTableroX);//calculo la posicion inicial del subtablero en la fila
           int posIniY=columna-(columna%subTableroY);//posicion inicial del subtablero en la columna
           //recorremos el  subtablero en busca de algun elemento repetido
           for(int h=posIniX;h<posIniX+subTableroX;h++ )
               for(int n=posIniY;n<posIniY+subTableroY;n++){
                   if(tablero[h][n])==elemento) existe=true ;
               }
           return existe;
    }

    subTableroX es el numero de filas q tien el subtanblero es decir su longitud y es conocido
    el problema es que si la fila es 1 y el subtableroX vale 3 el modulo 1%3 deberia ser 1 lo cual deberia funcionar pero me da error seguramente xq el dividendo es menor q el divisor y asi estamos q nose como calcular la posicon del subtablero

    Posted 1 year ago #


  2. Buenas,

    No he entendido muy bien, lo que intentas explicar, ni lo que pretendes hacer en el código con el uso del operador de módulo (%), pero básicamente para saber en que subCuadrante del Sudoku estás y recorrerlo en busca de un valor, yo utilizaría una función tal que así:

     
    	private static boolean comprobarSubTableros(int fila,int columna,int elemento){
    	       int subTableroX = 3;
    	       int subTableroY = 3;
    	       int[][] tablero = new int[9][9];
    		   int cuadroX=fila/subTableroX;
    		   int cuadroY=columna/subTableroY;
    		   int posIniX=cuadroX * subTableroX;//calculo la posicion inicial del subtablero en la fila
    		   int posIniY=cuadroY * subTableroY;//posicion inicial del subtablero en la columna
    	       //recorremos el  subtablero en busca de algun elemento repetido
    	       for(int h=posIniX;h<posIniX+subTableroX;h++ )
    	           for(int n=posIniY;n<posIniY+subTableroY;n++){
    	               if(tablero[h][n]==elemento)
    	               {
    	            	   return true;
    	               }
    	           }
    	       return false;
    	}
     

    Espero que te sirva

    Saludos
    Posted 1 year ago #
  3. Perfecto eso era lo q estaba buscando ,gracias Torres y perdona por la explicacion q ya se q me lie un poco

    Posted 1 year ago #

Reply

You must log in to post.

1,070 posts in 437 topics over 40 months by 388 of 892 members. Latest: lalala, nijh1, jasu

Acerca de...

Dudas de Programación es una Web, dentro del proyecto aulambra.com que nace con la idea de propocionar un foro de consultas sobre diferentes temas de programación. Orientado a ayudar a los internautas hispano-hablantes en Internet.

Ir al Blog de Linea de Código

Otras Webs