C'est un article qui présente la bibliothèque kociemba qui calcule la solution du Rubik Cube et explique comment l'utiliser facilement.
Il existe différents types de python, des bibliothèques pour dessiner des graphiques 3D aux bibliothèques de mahjong. Voici une bibliothèque qui calcule instantanément la méthode de solution pour aligner toute la surface à partir de l'état actuel du Rubik Cube.
J'ai écrit cet article avec l'espoir que tous ceux qui recherchent un solveur Rubik Cube dans les cours d'université ou pour étudier gratuitement pendant les vacances d'été trouveront bientôt du kociemba.
Grâce à cette bibliothèque, j'ai pu créer un "robot qui résout les cubes Rubik de manière entièrement automatique". Video: Automatic Rubik's Cube Solver
A l'origine le nom du savant qui a inventé l'algorithme de Kociemba, qui résout le cube Rubik. Son vrai nom est Herbert Kociemba.
Je cherchais une bibliothèque pour résoudre le Rubik Cube pour les tâches de production de mon département. En fait, il existe de nombreuses autres bibliothèques pour résoudre Rubik Cube, mais beaucoup d'entre elles sont extrêmement lentes ou je ne sais pas comment les utiliser, j'ai donc eu du mal à ne pas savoir laquelle utiliser à ce moment-là. En attendant, j'ai décidé d'utiliser cette bibliothèque car c'était la plus simple à utiliser et la plus rapide à calculer.
Mon environnement était Ubuntu 16.04 LTS. Vous pouvez le mettre avec pip. Il semble que cela ait été confirmé avec Python2.7, Python3.3 +
pip install kociemba
Les personnes utilisant un système d'exploitation basé sur Unix tel que mac et ubuntu ont également besoin des commandes suivantes.
sudo apt-get install libffi-dev
Utilisez-le comme suit. La signification des symboles sera expliquée plus tard.
python
>>> import kociemba
>>> kociemba.solve('DRLUUBFBRBLURRLRUBLRDDFDLFUFUFFDBRDUBRUFLLFDDBFLUBLRBD')
u"D2 R' D' F2 B D R2 D2 R' F2 D' F2 U' B2 L2 U2 D R2 U"
Il est de notoriété publique pour ceux qui peuvent fabriquer un cube rubic, mais l'axe du cube rubic ne change pas quel que soit le nombre de vis tournées. Dans l'image ci-dessous, vous pouvez voir que le carré au centre de chaque surface ne bouge pas, quelle que soit la façon dont vous tournez la surface.
En utilisant ce fait, nous pouvons voir que même «l'état compliqué du cube rubique» peut être représenté par un symbole déterminé de manière unique.
Puisqu'il a été constaté que la masse centrale de chaque surface ne bouge pas, il est maintenant possible de spécifier une surface telle que «faire tourner la surface dont le centre est rouge», aussi disjointe qu'elle soit.
En kociemba, l'angle de rotation est exprimé comme suit. R est le côté rouge,
R:90 degrés dans le sens des aiguilles d'une montre
R':90 degrés dans le sens antihoraire
R2:Rotation à 180 degrés
kociemba ne colore pas chaque côté (F (avant), B (arrière), R (droite), L (gauche), U (haut), B (bas)) afin qu'il puisse être résolu dans n'importe quelle direction. Il est représenté par. Alors, tout d'abord, décidez de la correspondance entre ces symboles et la couleur de votre cube Rubik comme suit. Naturellement, la correspondance est décidée par la couleur du centre de la surface tournée vers l'avant.
--F (avant) → blanc --B (dos) → jaune
Ensuite, découvrez quelle couleur est dans quelle position en vous basant sur le dessin de développement suivant (c'est extrêmement difficile).
Par exemple, s'il y a du jaune en haut de ʻU1, alors ʻU1 = B
.
Enfin, ʻU1, U2, U3, U4, U5, U6, U7, U8, U9, R1, R2, R3, R4, R5, R6, R7, R8, R9, F1, F2, F3, F4, F5, F6, F7, F8, F9, D1, D2, D3, D4, D5, D6, D7, D8, D9, L1, L2, L3, L4, L5, L6, L7, L8, L9, B1, B2, B3, Créez la chaîne str
dans l'ordre de B4, B5, B6, B7, B8, B9. et exécutez
kociemba.solve (str)` pour obtenir la solution.
Recommended Posts