sábado, 8 de diciembre de 2012

EL Cubo Magico o Cubo de Ruibik




https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixSll_SINI377rq-hGwYuFvVj5dAVnkZ3WgAP10HfWakwA5LTErSCer5RuymNo0H-6F7mFYpbd_EmQqv1ctt-Bjb2m2K725d6vrwColazBpXKsi2X4IWEYCFtCF_CjsY4tQWI1l98Doyo/s1600/cubo-rubik%255B1%255D.jpg
Cubo de Magico


Solucion del Cubo Magico XD




EL CUBO MAGICO


INTRODUCCION

http://www.regalosoriginales.net/wp-content/uploads/2008/12/magic-cube.jpgEl problema del Cubo de Rubik Numérico radica en la complejidad de su solución pues se desea lograr que ésta se obtenga en el menor tiempo posible, es decir realizando la menor cantidad de movimientos posibles para lograr armar el cubo (estado final) partiendo de un cubo que está totalmente desordenado (estado inicial) y cuyas dimensiones para efecto del presente trabajo será 3x3x3.

El orden de los números en cada lado del cubo, es importante ya que de acuerdo a ello vamos a realizar el desarrollo del trabajo. Las posibles combinaciones y modificaciones se obtienen al girar las caras o lados del cubo, hasta llegar a formar la numeración correcta.


HISTORIA DEL CUBO DE RUIBK

El famoso cubo de Rubik fue inventado en el año 1974 por un profesor de Arquitectura de laUniversidad de Budapest, en Hungría, llamado ErnoRubik. El propósito fue explicar a susalumnos algunos conceptos relacionados con el volumen y el espacio, pero luego de algúntiempo el juego se hizo tan famoso que fue lanzado al mercado internacional.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-64L2SeVDLKtMrxOReSS8vtfwgec7GgnUwDl6kMoikpi96d51SbMtVmJk3X6L0G6hJxzNNVlCZxgQdeSWSAVYuunCNy45zyy_d3zcVmQ1BybgsxwVADraYFzZX7bfsT_bXd5leVBTc33l/s320/cubo+de+rubik+-+como+resolver+el+cubo+de+rubik+-+cubo+magico.jpg

El cubo de Rubik es un bloque cúbico con su superficie subdividida de modo que cada caraconsiste en nueve cuadrados. Cada cara se puede rotar, dando el aspecto de una rebanada enteradel bloque que rota sobre sí mismo. Esto da la impresión de que el cubo está compuesto de 27cubos más pequeños (3 × 3 × 3). En su estado original cada cara del cubo es de un color, pero larotación de cada una de estas permite que los cubos más pequeños sean combinados de muchasmaneras. Tal es así que el cubo puede tener más de 43 trillones de diversas posiciones.




OBJETIVO DEL JUEGO
Solucion del Cubo Magico XD

El objetivo básico del juego es restaurar el cubo a su condición original. Se deben utilizar lasdiferentes rotaciones que el cubo permite, en cada uno de sus lados, para ir llevando cada pieza de éste a su correcta ubicación, logrando así que cada cara sea de un único color.







Movimientos Básicos




Lo primero por realizar a la hora de expresar soluciones para el cubo es efectuar una notaciónadecuada; por lo que se nombra cada cara con una letra mayúscula para describir losmovimientos sobre el cubo:

·         La cara de Arriba: A  (U)
·         La cara de aBajo o base: B (D)
·         La cara de la Izquierda: I (L)
·         La cara de la Derecha: D (R)
·         La cara del Frente: F (F)
·         La cara de a Tras: T (B)



Paso 1:
Formar una cruz en la primera cara(Ejemplo color blanco).

Paso 2:
Colocar los vértices en la primera cara  utilizar el siguiente algoritmo:
B
D

Paso 3
Completar la segunda capa, buscando las aristas laterales, utilizar el siguiente algoritmo:
Izquierda                                        
A´
I
A
A
F


Derecha
A
D
F
A

Paso 4:
Formar una cruz en la tercera capa, buscando la adecuada posición , utilizar el siguiente algoritmo:
D
A
F


Paso 5:
Coincidir los colores de la cruz, utilizar el siguiente algoritmo:
D
A
A
D
A
A


Paso 6:
Colocar correctamente las esquinas que esten correctamente los 3 colores , utilizar el siguiente algoritmo:
A
D
I
A


Paso 7:
Ubicar las aristas que faltan y utilizar el siguiente algoritmo:
B
D






********************************************************************************
En esta pare les muestro el cubo magico realizado en la plataforma "PROLOG"

Aquí les presento el cubo de Ruibik o Cubo magico, realizado en la plataforma Prolog, donde dicho programa les da la solución del cubo mágico ordenando los números de cada cara del cubo en tal forma que la suma en forma vertical, horizontal y en diagonal, les da 15, el fin de este programa es dar la solución, también les muestro el código que implemente, para poder lograr este objetivo.




Aquí les muestro el código que que use para poder lograr este cubo mágico.

/*Anthony Jesus Paucar Ruiz  // Ingenieria de Sistemas // 8vo ciclo // 2012 */

/* Cubo Magico de 3x3 o Cubo de Rubik */
/* Este programa nos ayuda a resolver el cubo magico*/
/* hace la combinacion necesaria de numeros, para hallar la posicion correcta de cada numero*/
/* y para comprobar que esta en posocion correcta, debemos sumar los numeros en forma*/
/* Vertical, Horizontal y en Diagonal y la suna de cada de los 3 casilleros */
/* en esta caso representados como |X|Y|Z| = 15 */
/* en esta caso representados como |X|Y|Z| = 15 */
/* en esta caso representados como |X|Y|Z| = 15 */
/*                                  = = =  =     */
/*                                 15 15 15   15   */



predicates
nondeterm numero(integer) /* los números que pueden usarse */
ecuacion(integer,integer,integer,integer) /* descripción de cada suma */
cubo_magico /* meta a resolver */

clauses
/* condiciones iniciales */
numero(1).
numero(2).
numero(3).
numero(4).
numero(5).
numero(6).
numero(7).
numero(8).
numero(9).

ecuacion(X,Y,Z,R) :- R = X + Y + Z. /* la suma siempre debe dar R, y R = 15 */

cubo_magico :-
numero(A), numero(B), numero(C),
numero(D), numero(E), numero(F),
numero(G), numero(H), numero(I),
/* Se debe tener cuidado en que los numeros no sean repetidos */
/* aqui defino que la diferencia de cada numero, para que no se repitan en los casilleros del cubo */
A<>B,A<>C,A<>D,A<>E,A<>F,A<>G,A<>H,A<>I,
B<>C,B<>D,B<>E,B<>F,B<>G,B<>H,B<>I,
C<>D,C<>E,C<>F,C<>G,C<>H,C<>I,
D<>E,D<>F,D<>G,D<>H,D<>I,
E<>F,E<>G,E<>H,E<>I,
F<>G,F<>H,F<>I,
G<>H,G<>I,
H<>I,
/* Esta parte nos ayuda a definir, la cantidad de combinaciones que se vallan a probar*/
write(A," ",B," ",C," ",D," ",E," ",F," ",G," ",H," ",I),nl,
/* Esta es una combinacion necesaria para que se realize el cubo magico*/
ecuacion(A,B,C,R),
ecuacion(D,E,F,R),
ecuacion(G,H,I,R),
ecuacion(A,D,G,R),
ecuacion(B,E,H,R),
ecuacion(C,F,I,R),
ecuacion(A,E,I,R),
ecuacion(G,E,C,R),
nl,write("Solución"),nl,
write("                           "),write("  .  "),write("----+-----+----"),nl,
write("                           "),write("  |  "),write(A),write("  |  "),write(B),write("  |  "),write(C),write("  |  "),nl,
write("                           "),write("  .  "),write("----+-----+----"),nl,
write("                           "),write("  |  "),write(D),write("  |  "),write(E),write("  |  "),write(F),write("  |  "),nl,
write("                           "),write("  .  "),write("----+-----+----"),nl,
write("                           "),write("  |  "),write(G),write("  |  "),write(H),write("  |  "),write(I),write("  |  "),nl,
write("                           "),write("  .  "),write("----+-----+----"),nl,

write("  .  "),write("----+-----+----"),write("  .  "),write("  .  "),write("----+-----+----"),write("  .  "),write("----+-----+----"),nl,
write("  |  "),write(G),write("  |  "),write(H),write("  |  "),write(I),write("  |  "),write("  |  "),write(C),write("  |  "),write(B),write("  |  "),write(A),write("  |  "),write("  |  "),write(C),write("  |  "),write(B),write("  |  "),write(A),write("  |  "),nl,
write("  .  "),write("----+-----+----"),write("  .  "),write("  .  "),write("----+-----+----"),write("  .  "),write("----+-----+----"),nl,
write("  |  "),write(D),write("  |  "),write(E),write("  |  "),write(F),write("  |  "),write("  |  "),write(I),write("  |  "),write(H),write("  |  "),write(G),write("  |  "),write("  |  "),write(F),write("  |  "),write(E),write("  |  "),write(D),write("  |  "),nl,
write("  .  "),write("----+-----+----"),write("  .  "),write("  .  "),write("----+-----+----"),write("  .  "),write("----+-----+----"),nl,
write("  |  "),write(A),write("  |  "),write(B),write("  |  "),write(C),write("  |  "),write("  |  "),write(F),write("  |  "),write(E),write("  |  "),write(D),write("  |  "),write("  |  "),write(I),write("  |  "),write(H),write("  |  "),write(G),write("  |  "),nl,
write("  .  "),write("----+-----+----"),write("  .  "),write("  .  "),write("----+-----+----"),write("  .  "),write("----+-----+----"),nl,

write("                           "),write("  .  "),write("----+-----+----"),nl,
write("                           "),write("  |  "),write(I),write("  |  "),write(H),write("  |  "),write(G),write("  |  "),nl,
write("                           "),write("  .  "),write("----+-----+----"),nl,
write("                           "),write("  |  "),write(F),write("  |  "),write(E),write("  |  "),write(D),write("  |  "),nl,
write("                           "),write("  .  "),write("----+-----+----"),nl,
write("                           "),write("  |  "),write(C),write("  |  "),write(B),write("  |  "),write(A),write("  |  "),nl,
write("                           "),write("  .  "),write("----+-----+----"),nl,
nl,
write("***********Estas son las caras del cubo... SOLO NO SE PUEDE OBSERVAR UNA CARA,........GRACIAS*************"),nl,
write("***Si precionas cualquier tecla, se volvera a ejecutar el programa***"),
readchar(_), /* presiona una tecla para continuar */
fail. /* dame todas las soluciones */

goal
cubo_magico. /*meta a resolver */



Imagen de la solución que entrega el programa Prolog.











No hay comentarios:

Publicar un comentario