Nous pouvons représenter un Rubik's Cube comme un filet comme suit (une fois résolu):
WWW
WWW
WWW
GGGRRRBBBOOO
GGGRRRBBBOOO
GGGRRRBBBOOO
YYY
YYY
YYY
Chaque lettre représente la couleur correspondante ( W
blanc, G
vert, etc.)
Il a été démontré qu'il existe exactement (~ quintillions) de permutations différentes dans lesquelles un Rubik's Cube peut se trouver.
Votre tâche consiste à prendre un entier compris entre et et à générer la permutation correspondante, de la manière indiquée ci-dessus. Vous pouvez choisir la façon dont les permutations sont ordonnées, mais l'algorithme que vous utilisez doit être montré pour générer une permutation unique et correcte pour chaque entrée possible.
Règles de permutation non valides
Tiré de cette page
Pour commencer, le centre de chaque face 3x3 doit rester le même, car le carré central d'un Rubik's Cube ne peut pas être tourné. Le cube entier peut être tourné, changeant où une face semble se trouver, mais cela n'affecte pas le filet du cube.
Si nous disons que chaque permutation a une parité, basée sur la parité du nombre de swaps pour atteindre cette permutation, nous pouvons dire
Chaque pièce d'angle a trois orientations possibles. Il peut être orienté correctement (0), dans le sens horaire (1) ou antihoraire (2). La somme des orientations des coins reste toujours divisible par 3
Chaque rotation légale sur le Rubik's Cube retourne toujours un nombre pair d'arêtes afin qu'il ne puisse y avoir qu'une seule pièce mal orientée.
Compte tenu de la permutation de tous les coins et bords, la parité globale doit être paire, ce qui signifie que chaque mouvement légal effectue toujours l'équivalent d'un nombre pair de swaps (en ignorant l'orientation)
Par exemple, les trois réseaux suivants sont des sorties non valides:
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)
Règles
- Vous devez prouver, comme vous le souhaitez, que l'algorithme est valide. Vous n'avez pas à énumérer chaque permutation, tant que vous prouvez la validité de votre algorithme.
- Vous devez inclure une sorte de preuve de validité dans votre réponse. Cette preuve peut prouver la validité dans n'importe quelle méthode de preuve acceptée, sauf pour énumérer toutes les possibilités.
- Vous pouvez choisir d'utiliser une autre méthode de saisie si vous le souhaitez, tant que:
- L'entrée est bornée
- Chaque entrée correspond à une sortie unique
- Vous expliquez clairement le format d'entrée et comment il correspond à chaque sortie
- Vous pouvez modifier les caractères utilisés pour utiliser 6 caractères ASCII différents, entre 33 (
!
) et 126 (~
), au lieu deWGRBOY
- Vous pouvez sortir de la manière que vous souhaitez, tant qu'il forme une représentation claire d'un cube où les 6 faces peuvent être affichées, y compris n'importe quel filet de cube valide, une chaîne simple ou un rendu 3D. Si vous n'êtes pas sûr d'un format spécifique, n'hésitez pas à demander dans les commentaires.
Il s'agit d'un code-golf donc le code le plus court, en octets, dans chaque langue l'emporte.
Exemples de sorties valides
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)