Automágica: durante 2017 estoy trabajando bastante en Automágica, mi software para editar libros: Más información - Posts relacionados

Rompecabezas T (solución)

Ayer dejé planteado un rompecabezas, ¿pudieron solucionarlo? Cuando empezamos a probar nos costó bastante, el juego fue la atención de la noche hasta que desistimos. Incluso empezamos a elaborar teorías sobre el Pensamiento Lateral, aventuramos que el resultado sería algo deforme, incluso que la T se formaría con espacios en blanco y las maderas al rededor.

Bien, no. La solución, una vez hallada, no parece muy complicada. Si no pudiste resolverlo y como nosotros te pusiste a elaborar teorías para proteger tu amor propio: lo siento, simplemente no pudiste resolverlo.

A continuación la solución:

2 partes

3 partes

T armada

Sobre el juego

El juego es producido por La Parra, taller de juegos. Santa Fe, 9 de julio 4843.


Rompecabezas T (enunciado)

Este fin de semana lo estoy pasando en Pellegrini. Llegué anoche y fuimos a comer con mi familia. A la vuelta vino mi aigo Joel y mi mamá nos dió un rompecabezas hecho en madera bastante interesante. Consiste en 4 piezas de madera que hay que disponer de cierta forma para formar una letra T mayúscula.

Las piezas son las siguientes (como son de madera, podemos darlas vuelta y usarlas del lado que más nos convenga):

Amarillo

amarilloamarillo 4amarillo2amarillo 3

Azúl

azul 3azulazul 4azul 2

Verde

verdeverde 3verde 2verde 4

Rojo

rojorojo 2rojo 3rojo 4

Ya antes en el blog había planteado este tipo de juegos, se los dejo para pensar un poco. Mañana la solución.

UPDATE: solución al rompecabezas.


Smarter N-Puzzle

N-Puzzle sigue sin tener una real inteligencia, pero hice una modificación que lo hace verse un poco más inteligente:

Si un jugador o el desordenador aleatorio hace movimientos que se cancelan entre sí

    <li>Izquierda - Derecha</li>
    
    <li>Izquierda - Izquierda - Derecha - Derecha</li>
    
    <li>Izquierda - Izquierda - Arriba - Arriba - Derecha - Izquierda - Abajo - Abajo - Derecha - Derecha</li>
    

    el siguiente algoritmo es capás de eliminarlos de la lista de acciones y así lograr una resolución en menos movimientos y que parezca menos tonta.

    El método que encapsula al algoritmo en cuestión es llamado cada vez que se entra al modo Auto Solve:

    
        def _reduce_actions(self):
    
            '''This method try to reduce the actions' log
    
            removing repeted moves.'''
    
    
    
            log = self.actions_log
    
            stack = []
    
    
    
            while log:
    
    
    
                a = log.pop()
    
                ia = self._inverse_action(a)
    
    
    
                if stack:
    
                    s = stack.pop()
    
                    if ia != s:
    
                        stack += [s, a]
    
                else:
    
                    stack += [a]
    
    
    
                print "Stack: ", len(stack)
    
                print "Log: ", len(log)
    
    
    
            stack.reverse()
    
            self.actions_log = stack

    Download last version: n-puzzle-0.1-2


    N-Puzzle

    Hace unos días mandé a la lista de correos de PyAr una implementación inicial del juego N-Puzzle. n-puzzle-0.1.tgz.

    Es muy sencilla. Toma una imagen, la parte en cuadraditos, quita uno de los cuadraditos y los mezcla. Luego uno puedo deslizar los cuadraditos adyasentes al espacio en blanco con las flechas de teclado. El objetivo del juego es recomponer la imagen original.

    N Puzzle 0.01
    Hoy estuve mejorando el código y agregándole una funcionalidad que permite que la computadora resuelva el problema (o nos ayude a hacerlo).La idea original para este programa es luego utilizarlo para probar los métodos de búsqueda que estamos estudiando en Inteligencia Artificial.

    Ojo! Si bien en esta nueva versión apretando la tecla 'S' entramos y salimos del modo Auto Solve, no estoy usando IA para implementarlo. Siempre pueden mirar el código y ver como lo estoy haciendo :)

    Actualmente el juego está planteado como una prueba de concepto más que como un programa totalmente usable. Esto implica que pueden ocurrir errores durante su ejecución y que algunas opciones que podrían ser configurables están clavadas en el código:

    • N es el número de fichas que participan del juego: 8 (en un tablero de 3 x 3), 15 (en uno de 4 x 4), 24 (en uno de 5 x 5). Por defecto es 8 pero puede cambiarse en el archivo run.py.
    • La imagen que se usará para generar las fichas se llama ejemplo.jpg y debe estar en el mismo directorio que los scripts (yo proveo una). Pueden pisarla con otra imagen o pueden cambiar la ruta a la misma en el archivo run.py. La imagen debe ser de 600 x 600 pixeles.
    • El desordenamiento original del tablero se efectua mediante un número X de movimientos. En el código fuente el valor usado es 20 pero puede cambiarse en el método __init__ de la clase Puzzle en el archivo puzzle.py (van a encontrarlo en la llamada al método _shuffle).

    El puzzle resuelto se ve así:

    N Puzzle solved
    La última versión puede encontrarse en: files/python/n-puzzle-0.1-1.tgz.Y este es el CHANGELOG de mi primer intento a este segundo mejorado:
    0.1-1: mix(x,y) se realiza ahroa como x,y = y,x en lugar de usar una variable temporal. Cada Card tiene un cid (Card ID), un par i,j correspondiente a su posición original en el tablero. El desordenado del tablero se realiza mediante el movimiento aleatorio de las piezas (usando los métodos up, down, right y left) para evitar que el juego comience con una configuración que no tiene solución (Para un ejemplo, Google: 14-15 Puzzle). Apretando la tecla 'S' se entra y sale del modo 'Auto Solve' en el cual la computadora nos ayuda a resolver el juego. Atención: NO IA was used in this feature.

    Requiere Python y PyGame. Si tienen problemas para instalarlos mandenme un mail y los ayudo.


    Tener una mente abierta

    Siempre escuchamos de la importancia de tener una mente abierta. Este pequeño desafío que les presento apunta a eso, a no circunscribirse a las formas conocidas y estar abierto para poder encontrar la respuesta.

    La primer vez que me encontré con este acertijo estaba en un campamento en Manucho (Santa Fe) y era una de las formas que los distintos equipos tenían de sumar puntos, no recuerdo que nos haya ido muy bien. De hecho nuestro equipo no fue el que resolvió el arcertijo.

    Hay nueve puntos dispuestos como se ve en la figura:

    1

    Se deben realizar 4 trazos (líneas rectas) sin levantar el marcador y conseguir pasar por todos los puntos. No te apueres a seguir. Tomate un rato para pensarlo. Terminá de leer esta entrada sólo si:

    1. Ya conocías el acertijo.
    2. Te diste por vencido.
    3. Encontraste la solución!

    Si encontraste la solución: Felicitaciones!! Si no y te diste por vencido, ahora tomo mi cyber-marcador-azúl y trazo la respuesta:

    2

    3

    4

    5