Podemos representar un cubo de Rubik como una red de la siguiente manera (cuando se resuelve):
WWW
WWW
WWW
GGGRRRBBBOOO
GGGRRRBBBOOO
GGGRRRBBBOOO
YYY
YYY
YYY
Cada letra representa el color correspondiente ( W
es blanco, G
verde , etc.)
Se ha demostrado que hay exactamente (~ quintillones) diferentes permutaciones en las que puede estar un cubo de Rubik.
Su tarea es tomar un número entero entre y y generar la permutación correspondiente, de la manera que se muestra arriba. Puede elegir cómo se ordenan las permutaciones, pero se debe mostrar el algoritmo que utiliza para generar una permutación única y correcta para cada entrada posible.
Reglas de permutación no válidas
Tomado de esta página
Para empezar, el centro de cada cara de 3x3 debe permanecer igual, ya que el cuadrado central en un Cubo de Rubik no se puede girar. Se puede rotar todo el cubo, cambiando donde parece estar una cara, pero esto no afecta la red del cubo.
Si decimos que cada permutación tiene una paridad, basada en la paridad del número de permutas para alcanzar esa permutación, podemos decir
Cada pieza de esquina tiene tres orientaciones posibles. Se puede orientar correctamente (0), en sentido horario (1) o en sentido antihorario (2). La suma de las orientaciones de las esquinas siempre es divisible por 3.
Cada rotación legal en el Cubo de Rubik siempre voltea un número par de aristas, por lo que no puede haber una sola pieza orientada incorrectamente.
Teniendo en cuenta la permutación de todas las esquinas y bordes, la paridad general debe ser uniforme, lo que significa que cada movimiento legal siempre realiza el equivalente de un número par de intercambios (ignorando la orientación)
Por ejemplo, las siguientes tres redes son salidas no válidas:
WWW
WWW
WWW
GGGWWWBBBOOO
GGGRRRBBBOOO
GGGRRRBBBOOO
YYY
YYY
YYY
(Too many whites/not enough reds)
WRW
WRW
WRW
GGGRWRBBBOOO
GGGWRRBBBOOO
YYGRWROOOBBB
YYY
GGY
YYY
(There are two red/green center squares and no white/yellow center squares.
In all valid permutations, the center squares are all different colours)
WWW
WWW
WWW
GGGRRRBBBOOO
GGGRRRBBBOOO
GGGRRRBBOYOO
YYY
YYY
YYB
(The yellow/orange/blue corner is rotated into an impossible permutation)
Reglas
- Debes demostrar, como quieras, que el algoritmo es válido. No tiene que enumerar cada permutación, siempre que demuestre la validez de su algoritmo.
- Usted debe incluir algún tipo de prueba de la validez de su respuesta. Esta prueba puede probar la validez en cualquier método de prueba aceptado, excepto para enumerar todas las posibilidades.
- Puede optar por utilizar un método de entrada alternativo si lo desea, siempre que:
- La entrada está limitada
- Cada entrada corresponde a una salida única
- Explica claramente el formato de entrada y cómo corresponde a cada salida
- Puede cambiar los caracteres utilizados para usar 6 caracteres ASCII diferentes, entre 33 (
!
) y 126 (~
), en lugar deWGRBOY
- Puede imprimir de la forma que desee, siempre que forme una representación clara de un cubo en el que se puedan mostrar las 6 caras, incluida una red de cubos válida, una sola cadena forrada o una representación 3D. Si no está seguro acerca de un formato específico, no dude en preguntar en los comentarios.
Este es un código de golf, por lo que gana el código más corto, en bytes, en cada idioma.
Ejemplo de salidas válidas
YYY
YYY
YYY
GGGRRRBBBOOO
GGGRRRBBBOOO
GGGRRRBBBOOO
WWW
WWW
WWW
(The `W` and `Y` faces have been swapped)
ZZZ
+++
+}}
+[[}77ZZ7bbb
bb[}[[7}}+Z7
bb[}++[}}+Z7
7bb
[7Z
[7Z
(To start with, the colours have been mapped W -> +, G -> b, R -> [, B -> }, O -> Z and Y -> 7.
Then, the moves L, R, U and F' have been applied, in that order.
Notice that each centre square is different, and corresponds to the same colour as in the mapping)