martes, 17 de mayo de 2016



N-PUZZLE


Es un puzzle el cual consta de un marco de azulejos cuadrados numerados en orden aleatorio, con una ficha que falta. El objetivo del rompecabezas es colocar todas las fichas en orden por movimientos deslizantes que utilizan el espacio vacío.

Para la solución de este problema se hace uso de python como lenguaje de programación y ademas se utiliza la librería graphics que junto con la clase Animate realiza la parte grfica de nuestro programa. 

Para la parte de la lógica se implementan una pila en la cual va a quedar cada uno de los tableros solución y una cola de prioridad que basándose en las distancias hamming manhattan del puzzle decide cual sera el siguiente movimiento.

En la siguiente imagen se muestra como funcionan estas distancias mencionadas:


A continuación vemos el resultado del programa para el proximo puzzle propuesto:

blocks = [  [2 , 3   ,  4  ,  8  ],
                  [1 , 6   ,  0  , 12 ],
                  [5 , 10 ,  7  , 11 ],
                  [9 , 13 , 14 , 15 ]
                ]