Eternity II

Hola a todos!

Bueno, pues al fin ha salido a la venta el famoso y esperado puzzle Eternity II. Desde hace unos días he estado desarrollando un programa en Java que permite resolverlo empleando backtracking.

Descargar eternity.rar

El entorno de desarrollo utilizado ha sido Netbeans 5.5. Ya sé que Java, por ser un lenguaje interpretado, es lento, pero podéis utilizar este traductor de archivos Jar a ejecutables Windows.

Notas importantes:

  • Las piezas deberán ser introducidas empezando por su parte superior, en sentido horario.
  • Para describir cada uno de los cuatro elementos de las piezas puede emplearse cualquier variable o literal de tipo String. Para nosotros es más sencillo trabajar con cadenas de caracteres que con números. Pero sería posible mejorar el algoritmo mediante una función que asignase a cada elemento diferente de las piezas un entero, agilizando así las comparaciones. Finalmente se utilizaría otro método que deshiciese esta transformación (para facilitar la lectura). Como es de esperar, estas modificaciones requerirían el cambio de las comparaciones (que hasta ahora se realizan con el método equals de la clase String), para utilizar el operador lógico de igualdad (==).
  • Buscad la instrucción final int LADO = 6; y poned un 16.
  • La estrategia elegida ha sido la resolución de cada uno de los cuadrado existentes, empezando por el del borde, hasta llegar a un cuadrado 2×2.
  • El espacio de piezas ha sido dividido en 3 tipos: piezas de las esquinas (dos elementos son de color gris), piezas pertenecientes al borde y no a las esquinas (un elemento de color gris), y piezas interiores (sin partes de color gris). Esta clasificación mejora la eficiencia del algoritmo.
  • Si disponéis de varias máquinas, podéis implementar mediante Java RMI la solución distribuida del puzzle de modo que, por ejemplo, una máquina comenzara calculando cada una de las posibles soluciones del borde; cada vez que encontrase una solución del borde, si existiese una máquina libre, invocaría el método remoto de resolución. En el caso de contar con un número elevado de máquinas de cálculo, sería interesante implementar un método que aleatorizase la disposición inicial de las piezas (fundamentalmente de las piezas interiores).
Anuncios

2 responses

29 07 2007
weke

Uhm… has ido ya a reclamar los milloncejos?

29 07 2007
frajper

Echando un vistazo a lo que apunta este comentario entenderás por qué ni siquiera lo he comprado. Además, ya subirá alguien una foto al eMule con las piezas. 😉

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: