[PYTHON] Comment utiliser la bibliothèque de solveurs "kociemba" de Rubik Cube

introduction

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.

Exemple de travail avec 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

Screenshot from 2020-07-05 22-13-16.png

Qu'est-ce que le kociemba?

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.

Comment installer

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

Comment utiliser

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"

Notation d'opération Rubik Cube

L'axe est immobile

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.

Screenshot from 2020-07-05 22-39-13.png

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.

Le nom du visage est représenté par la couleur de la cellule centrale

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.

L'angle de rotation est également représenté par un symbole

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

Comment entrer dans le solveur

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).

Screenshot from 2020-07-05 23-06-07.png

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.

référence

kociemba - GitHub

Recommended Posts

Comment utiliser la bibliothèque de solveurs "kociemba" de Rubik Cube
Comment utiliser la bibliothèque C en Python
Comment utiliser la bibliothèque de dessins graphiques Bokeh
Comment utiliser le générateur
Comment utiliser le décorateur
[Python] Comment utiliser la bibliothèque de création de graphes Altair
Comment utiliser la fonction zip
Comment utiliser le module optparse
Comment utiliser les requêtes (bibliothèque Python)
Comment utiliser le module ConfigParser
[python] Comment utiliser Matplotlib, une bibliothèque pour dessiner des graphiques
Remarques sur l'utilisation de la guimauve dans la bibliothèque de schémas
Comment utiliser le pipeline Spark ML
[Linux] Comment utiliser la commande echo
Comment utiliser le débogueur IPython (ipdb)
Comment utiliser la bibliothèque "torchdiffeq" qui implémente le bloc ODE de Neural ODE
Comment utiliser l'API Google Cloud Translation
Comment utiliser l'API du guide des programmes NHK
Comment utiliser la bibliothèque de traitement d'image basée sur PyTorch "Kornia"
Comment utiliser xml.etree.ElementTree
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser Seaboan
Comment utiliser la correspondance d'image
Comment utiliser le shogun
Comment utiliser Pandas 2
Comment utiliser Virtualenv
Comment utiliser numpy.vectorize
Comment utiliser pytest_report_header
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment utiliser x-means
Comment utiliser WikiExtractor.py
Comment utiliser IPython
Comment utiliser virtualenv
Comment utiliser Matplotlib
Comment utiliser iptables
Comment utiliser TokyoTechFes2015
Comment utiliser le dictionnaire {}
Comment utiliser Pyenv
Comment utiliser la liste []
Comment utiliser python-kabusapi
Comment utiliser OptParse
Comment utiliser le retour
Comment utiliser pyenv-virtualenv
Comment utiliser imutils
Comment utiliser Raspeye Relay Module Python
Je voulais utiliser la bibliothèque Python de MATLAB
Ajouter un utilisateur Linux, comment utiliser la commande useradd
Comment utiliser la clause exist dans l'ensemble de requêtes Django
[Introduction à Udemy Python3 + Application] 30. Comment utiliser l'ensemble
Comment utiliser argparse et la différence entre optparse
Comment lire le journal du solveur CBC (Pulp, python-mip)
Comment utiliser le modèle appris dans Lobe en Python
(Rappelez-vous rapidement) Comment utiliser la ligne de commande LINUX
Comment utiliser Qt Designer