[PYTHON] Verwendung der Solver-Bibliothek "kociemba" von Rubik Cube

Einführung

In diesem Artikel wird die Bibliothek kociemba vorgestellt, die die Lösung des Rubik-Würfels berechnet und deren einfache Verwendung erläutert.

Es gibt verschiedene Arten von Python, von Bibliotheken zum Zeichnen von 3D-Diagrammen bis zu Mahjong-Bibliotheken. In dieser Zeit wird eine Bibliothek vorgestellt, die sofort die Lösungsmethode zum Ausrichten der gesamten Oberfläche anhand des aktuellen Status des Rubik-Würfels berechnet.

Ich habe diesen Artikel mit der Hoffnung geschrieben, dass jeder, der in den Sommerferien nach einem Rubik Cube-Löser in College-Klassen oder kostenlosem Lernen sucht, bald Kociemba findet.

Beispiel einer Arbeit mit Kociemba

Dank dieser Bibliothek konnte ich einen "Roboter erstellen, der Rubik-Würfel vollautomatisch löst". Video: Automatic Rubik's Cube Solver

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

Was ist Kociemba?

Ursprünglich war es der Name des Gelehrten, der den Kociemba-Algorithmus entwickelt hat, der den Rubik-Würfel löst. Sein richtiger Name ist Herbert Kociemba.

Ich suchte nach einer Bibliothek, um den Rubik Cube für die Produktionsaufgaben meiner Abteilung zu lösen. Eigentlich gibt es viele andere Bibliotheken zum Lösen von Rubik Cube, aber viele von ihnen sind extrem langsam oder ich habe keine Ahnung, wie ich sie verwenden soll, daher fiel es mir schwer, nicht zu wissen, welche ich zu diesem Zeitpunkt verwenden sollte. In der Zwischenzeit habe ich mich für diese Bibliothek entschieden, da sie am einfachsten zu verwenden und am schnellsten zu berechnen war.

Wie installiert man

Meine Umgebung war Ubuntu 16.04 LTS. Sie können es mit pip setzen. Es scheint, dass es mit Python2.7, Python3.3 + bestätigt wurde

pip install kociemba

Benutzer von Unix-basierten Betriebssystemen wie Mac und Ubuntu benötigen außerdem die folgenden Befehle.

sudo apt-get install libffi-dev

Wie benutzt man

Verwenden Sie es wie folgt. Die Bedeutung der Symbole wird später erläutert.

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"

Rubik Cube Operation Notation

Die Achse ist unbeweglich

Es ist allgemein bekannt für diejenigen, die einen Rubikwürfel herstellen können, aber die Achse des Rubikwürfels ändert sich nicht, egal wie viele Schrauben gedreht werden. Im Bild unten sehen Sie, dass sich das Quadrat in der Mitte jeder Oberfläche nicht bewegt, egal wie Sie die Oberfläche drehen.

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

Anhand dieser Tatsache können wir sehen, dass selbst der komplizierte "Zustand des Rubinwürfels" durch ein Symbol dargestellt werden kann, das eindeutig bestimmt wird.

Der Name des Gesichts wird durch die Farbe der zentralen Zelle dargestellt

Da festgestellt wurde, dass sich die zentrale Masse jeder Oberfläche nicht bewegt, ist es jetzt möglich, eine Oberfläche wie "Drehen Sie die Oberfläche, deren Zentrum rot ist" anzugeben, unabhängig davon, wie unzusammenhängend sie ist.

Der Drehwinkel wird auch durch ein Symbol dargestellt

In Kociemba wird der Drehwinkel wie folgt ausgedrückt. R ist die rote Seite,

R:90 Grad im Uhrzeigersinn
R':90 Grad gegen den Uhrzeigersinn
R2:180 Grad Drehung

Eingabe in den Solver

kociemba färbt nicht jede Seite (F (vorne), B (hinten), R (rechts), L (links), U (oben), B (unten)), so dass es in jede Richtung gelöst werden kann. Es wird vertreten durch. Entscheiden Sie zunächst die Entsprechung zwischen diesen Symbolen und der Farbe Ihres Rubik-Würfels wie folgt. Natürlich wird die Entsprechung durch die Farbe der Mitte der Oberfläche nach vorne bestimmt.

--F (vorne) → weiß

Als nächstes finden Sie anhand der folgenden Entwicklungszeichnung heraus, welche Farbe sich in welcher Position befindet (dies ist äußerst schwierig).

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

Wenn sich beispielsweise an der oberen Position "U1" Gelb befindet, ist "U1 = B". Schließlich ist 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, Erstellen Sie die Zeichenfolge "str" in der Reihenfolge B4, B5, B6, B7, B8, B9. "und führen Sie" kociemba.solve (str) "aus, um die Lösung zu erhalten.

Referenz

kociemba - GitHub

Recommended Posts

Verwendung der Solver-Bibliothek "kociemba" von Rubik Cube
Verwendung der C-Bibliothek in Python
Verwendung der Grafikzeichnungsbibliothek Bokeh
Verwendung des Generators
Wie benutzt man den Dekorateur?
[Python] Verwendung der Diagrammerstellungsbibliothek Altair
Verwendung der Zip-Funktion
Verwendung des optparse-Moduls
Verwendung von Anfragen (Python Library)
Verwendung des ConfigParser-Moduls
[Python] Verwendung von Matplotlib, einer Bibliothek zum Zeichnen von Diagrammen
Hinweise zur Verwendung von Marshmallow in der Schemabibliothek
Verwendung der Spark ML-Pipeline
[Linux] Verwendung des Befehls echo
Verwendung des IPython-Debuggers (ipdb)
Verwendung der Bibliothek "torchdiffeq", die den ODE-Block von Neural ODE implementiert
Verwendung der Google Cloud Translation API
Verwendung der NHK-Programmführer-API
Verwendung der PyTorch-basierten Bildverarbeitungsbibliothek "Kornia"
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Wie benutzt man Seaboan?
Verwendung von Image-Match
Wie man Shogun benutzt
Verwendung von Pandas 2
Verwendung von Virtualenv
Verwendung von numpy.vectorize
Verwendung von pytest_report_header
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Wie man x-means benutzt
Verwendung von WikiExtractor.py
Verwendung von IPython
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Verwendung von iptables
Verwendung von TokyoTechFes2015
Verwendung des Wörterbuchs {}
Wie benutzt man Pyenv?
Verwendung der Liste []
Wie man Python-Kabusapi benutzt
Verwendung von OptParse
Verwendung von return
Wie man Imutils benutzt
Verwendung von Raspeye Relay Module Python
Ich wollte die Python-Bibliothek von MATLAB verwenden
Linux-Benutzer hinzufügen, wie der Befehl useradd verwendet wird
Verwendung der Exist-Klausel in Django Queryset
[Einführung in die Udemy Python3 + -Anwendung] 30. Verwendung des Sets
Wie man Argparse benutzt und den Unterschied zwischen Optparse
Lesen des CBC-Löserprotokolls (Pulp, Python-Mip)
Verwendung des in Lobe in Python erlernten Modells
(Denken Sie schnell daran) Verwendung der LINUX-Befehlszeile
Verwendung von Qt Designer