8 pharos

Así es, en tiempo récord leí todo el texto A Case of Study: The 8 Queens Puzzle y debo de decir que fue una pasada pues me recordó aquellos tiempos en los que tenía que leer un algoritmo tras otro y entenderlo en tiempo récord. Para escribir el programa se utilizó la versión 7 de Pharo así que aquí están los resultados.



Y a continuación las respuestas a las preguntas 1, 2 y 3:


1. La modificación que se tendría que hacer es:
  •     Iniciar en la columna más a la izquierda
  •     Si todas las reinas ya están puestas parar la ejecución y devolver true
  •     Probar y hacer un seguimiento con todas las filas de la columna actual.
    • Si la reina puede ponerse en esta fila marcarla como parte de una solución recursivamente revisar si el poner la reina en ese lugar conduce a una solución.
    • Si el poner la reina en ese lugar conduce a una solución regresar true.
    • Si el poner la reina no conduce a una solución marcar esta como una no solución y probar con otras filas.
    • Si todas las filas ya han sido probradas y nada funciona regresa false a dónde se llamó al backtracking.


   Para un tablero 8x8 hay 92 soluciones pero sólo 12 son distintas entre sí, las otras 80
   son producto de la rotación y el efecto espejo.

   Conociendo las posiciones de cada posible solución. Una vez que todas las soluciones hayan
   sido encontradas sólo es cuestión de revisar si estas posiciones no se repiten, las que sí
   descartarlas. 

2. Debido a que la implementación está hecha de forma a que si el vecino de la reina actual puede avanzar la ejecución continúa, esto lo hace el método canAttack por lo tanto findSolution sólo retorna la respuesta de canAttack.

3. Los valores de las filas seteados en 8 deben de cambiarse para aceptar la entrada del usuario.
Para estos valores de n, 1 y 2, el programa ni siquiera debería de comenzar su ejecución, podríamos
hacer uso de un assert para mandarle un mensaje al usuario que no hay solución para este tamaño de
tablero.

Al parecer todo salió mejor de lo que esperaba así que... ¡Nos vemos a la vuelta! Pero antes les dejó este GIF de un perrito, espero tengan un buen día, see ya!


Comentarios

Entradas populares de este blog

Hagamos un breve repaso

El QQQ que no es malo

Jersey Shore