martes, 6 de agosto de 2019

Método general 8, n reinas


MÉTODO GENERAL PARA LA OBTENCIÓN DE N REINAS EN TABLEROS DE AJEDREZ , EXPLICACIÓN GRÁFICA Y CÓDIGO JAVA QUE LO IMPLEMENTA.


Método general para obtener reinas en tableros cuadrados de ajedrez de un número de casillas horizontales:  x=4+n, igual al número de reinas, las cuales cumplen la propiedad de no amenazarse entre ellas según los movimientos de la reina en el juego de ajedrez, computacionalmente no viable para un número grande de reinas en el tablero.


Para aplicar el método se  empieza colocando una reina sobre cualquier casilla vertical de x=1,  a continuación : colocar en las casillas verticales siguientes de x=2 todas las reinas que no se amenacen con la anterior de x=1, repetir este procedimiento con todas las reinas de x=2 sobre x=3 , a partir de la casilla x=3  eliminar del procedimiento las reinas dispuestas en las casillas actuales de x que se amenazan con las de las casillas anteriores, con las reinas que no han sido eliminadas repetir el proceso hasta llegar si se puede a x=n.

El código java que adjunto emplea este método, pero en el ejemplo gráfico que se muestra a continuación para que sea más comprensible las reinas de las casillas verticales de x=2, x=3 …
en vez de operar con todas las reinas verticales de cada x=3,4..  ,se opera solo con una de ellas a modo de ejemplo.




En el código java que se adjunta para sacar todas las reinas existentes de un tablero de tamaño n hay que hacer el procedimiento con cada una de las casillas verticales de x=1.
Ej: en un tablero de 8*8: primero hago el proceso colocando la primera reina en la casilla (x=1 y=8), después en (x=1 y=7), repitiendo el proceso hasta (x=1 y=1) y saldrán los 92 tableros.





Paso 1 (x=1, y=6).




Se colocan todas las reinas en x=2 compatibles con la reina de x=1.
 











Escojo una reina en x=2 para aplicar el método en x=3.




Coloco todas las reinas en x=3 compatibles con x=2.
 








Se detectan la reinas en x=3 incompatibles con x=1.








Me quedo con las compatibles
 








Escojo una de las reinas compatibles y aplico el método en x=4.













Escojo una.






Se repite el procedimiento.





















En el ejemplo la elección de las reinas es programada  para dar con solución correcta, en el siguiente ejemplo se muestra un procedimiento fallido:


(El ordenador en vez de quedarse con una reina en x=n se queda con todas en cada x=n, cuando una reina ya no cumple Ej en x=6 todas las reinas están amenazadas, se elimina del grupo.)




EJEMPLO FALLIDO
 










Podeis descargar el codigo java en .txt desde este enlace:

codigo java n reinas


EN EL CÓDIGO  .txt QUE SE ADJUNTA

Cambios a realizar:

Poner el número de reinas.
Poner la coordenada y de la primera reina.
Crear en C: // la carpeta “queen”.
 







En este caso es un tablero de 8*8, la primera reina se coloca en y = 6.










Al ejecutar el código el resultado  se escribe en el fichero gusano.txt (el sistema lo crea solo).
 






Ej de salida en el fichero gusano.txt.
Los “+” indican series que no se han podido completar.

En este caso es un tablero de 9*9 con la primera reina en y=6.







En la primera serie que se ve : 6,1,5,2,9,7,4,8,3; significa:
en (x=1,y=6),(x=2,y=1),(x=3,y=5)(x=4,y=2)....


No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.