![]() |
Cubo de Magico |
![]() | |
Solucion del Cubo Magico XD |
EL CUBO MAGICO
INTRODUCCION

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.

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 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
I´
A
F´
A´
F
Derecha
A
D
A´
D´
A´
F
A
F´
Paso 4:
Formar una cruz en la tercera capa,
buscando la adecuada posición , utilizar el siguiente algoritmo:
F´
A
D´
A´
F
Paso 5:
Coincidir los colores de la cruz,
utilizar el siguiente algoritmo:
D
A
A
D
A
A
D´
Paso 6:
Colocar correctamente las esquinas que esten
correctamente los 3 colores , utilizar el siguiente algoritmo:
A
D
A´
I
A´
I´
Paso 7:
Ubicar las aristas que faltan y utilizar
el siguiente algoritmo:
D´
D
B´
********************************************************************************
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