Un pasatiempo venerado de los pedantes es señalar que las imágenes de "Cubos de Rubik" (en camisetas, carteles, etc.) en realidad no tienen solución.
Lo primero que debe verificarse es que el cubo esté formado por las piezas correctas. Para poder resolverse, un cubo necesita seis colores, cada uno con nueve cuadrados. El cubo también necesita que cada unidad de borde y esquina (estos son los cubos más pequeños que conforman el cubo) para ser únicos. No solo deben ser únicos, sino que si dos piezas centrales están opuestas entre sí, ninguna pieza de borde o esquina puede contener ambos colores.
Una vez que tenga un cubo que esté formado por todas las piezas correctas, aún debe verificar que pueda resolverse. Aquí hay un par de reglas, por lo que consultaré a un experto para que las explique, el spoiler a continuación explica cómo podemos hacer esto. Si está interesado en resolver el problema por su cuenta, no necesita visitar el sitio para comprender o participar en este desafío.
Su tarea es tomar un patrón como entrada y determinar si de hecho es un cubo de Rubik solucionable. Para que sea solucionable debe haber una forma de realizar movimientos válidos en un cubo para que el cubo tenga un solo color en cada cara (y las diferentes caras tengan colores diferentes). La mayoría de los cubos de Rubik tienen un color estándar (el blanco es opuesto al amarillo, etc.). No puede suponer que el estado de resolución sigue a este color particular.
Un movimiento válido es la rotación en sentido horario o antihorario de una sola cara del cubo. Con la rotación de la cara del cubo, también se giran los cuadrados que bordean la cara, permaneciendo conectados a la cara que estaban tocando anteriormente.
IO
Puede tomar el cubo de cualquier manera razonable. Si su idioma tiene algún tipo de "cara de cubo" incorporada, bueno para usted, está bien como entrada, de lo contrario puede tomar una matriz 2D de la red, del cubo, de 1 3 por 3 listas para cada cara. Solo se razonable. Si desea saber si un formato específico es aceptable, hágame un comentario o hágame ping en el chat y agregaré al desafío para indicar su validez.
Su formato de entrada solo necesita admitir hasta 9 colores posibles.
Para la salida, este es un problema de decisión, por lo que debe generar un valor constante para "Sí, este es un cubo de Rubik válido" y un valor constante diferente para "No, este no es un cubo de Rubik válido".
Este es el código de golf, por lo que las respuestas se puntuarán en bytes, siendo mejores menos bytes.
Casos de prueba
Aquí hay casos de prueba. Están formateados como la red de un cubo con cada cuadrado como una sola letra. Diferentes letras representan diferentes colores. Se pueden agregar más casos de prueba a pedido.
Soluble
RRR
RRR
RRR
GGGWWWBBBOOO
GGGWWWBBBOOO
GGGWWWBBBOOO
YYY
YYY
YYY
GRR
GRR
ORW
WWRBWYBOOGGY
GGRBWGYBBOOO
OOGRWGYWWRBB
WYO
YYB
YYB
Insoluble
RRR
RRR
RRR
GGGWWWBBBOOO
GGGWWWBBBOOO
GGGWYWBBBOOO
YWY
YYY
YYY
RRR
RRR
RRR
GGGWWWBBBOOO
GGGWWWBBBOOO
GGGWWWBBBOOO
YWY
YYY
YYY
RRR
RRR
GGG
GGYWYWRBBOBO
GGYWWWROBOOO
GGYWWWRBBOOO
BBB
YWY
YYY
RRW
RRW
GGG
GGYWWYEOBROO
GGYWWYEBBROO
GGOWWYWBBROO
BBB
YYW
YYO