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