Un temps de passage vénéré des pédants est de souligner que les images de "Rubik's Cubes" (sur des t-shirts, des affiches, etc.) ne sont pas réellement résolables.
La première chose à vérifier est que le cube est composé des bonnes pièces. Pour être résoluble, un cube a besoin de six couleurs chacune avec neuf carrés. Le cube a également besoin que chaque unité de bord et de coin (ce sont les plus petits cubes qui composent le cube) soit unique. Non seulement ils doivent être uniques, mais si deux pièces centrales sont opposées, aucune pièce de bord ou d'angle ne peut contenir ces deux couleurs.
Une fois que vous avez un cube composé de toutes les bonnes pièces, vous devez toujours vérifier qu'il peut être résoluble. Il y a quelques règles ici, je vais donc m'en remettre à un expert pour les expliquer, le spoiler ci-dessous explique comment nous pouvons le faire. Si vous souhaitez résoudre le problème par vous-même, vous n'avez pas besoin de visiter le site pour comprendre ou participer à ce défi.
Votre tâche consiste à prendre un modèle en entrée et à déterminer s'il s'agit en fait d'un cube Rubik résoluble. Pour être résoluble, il doit y avoir un moyen d'effectuer des mouvements valides sur un cube afin que le cube n'ait qu'une seule couleur sur chaque face (et que les différentes faces aient des couleurs différentes). La plupart des cubes de Rubik ont une coloration standard (le blanc est opposé au jaune, etc.), vous ne pouvez pas supposer que l'état de résolution suit cette coloration particulière.
Un mouvement valide est la rotation dans le sens horaire ou anti-horaire d'une seule face du cube. Avec la rotation de la face du cube, tous les carrés bordant le visage sont également tournés, restant connectés au visage qu'ils touchaient auparavant.
IO
Vous pouvez prendre le cube de toute manière raisonnable. Si votre langue a un type de "cube-face" intégré, bon pour vous, c'est bien comme entrée, sinon vous pouvez prendre un tableau 2D du filet, du cube, 1 3 par 3 listes pour chaque face. Soyez juste raisonnable. Si vous voulez savoir si un format spécifique est un commentaire acceptable ou envoyez-moi un ping dans le chat et j'ajouterai au défi d'indiquer sa validité.
Votre format d'entrée ne doit prendre en charge que jusqu'à 9 couleurs possibles.
Pour la sortie, c'est un problème de décision, vous devez donc sortir une valeur constante pour "Oui, c'est un cube Rubik valide" et une valeur constante différente pour "Non, ce n'est pas un cube Rubik valide".
Il s'agit de code-golf donc les réponses seront notées en octets avec moins d'octets étant meilleurs.
Cas de test
Voici des cas de test. Ils sont formatés comme le filet d'un cube avec chaque carré comme une seule lettre. Différentes lettres représentent différentes couleurs. D'autres tests peuvent être ajoutés sur demande.
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