Forum: Projekte & Code Lösung für Rubiks Cube


von Georg S. (randy)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich wollte meine Rubik Würfel der mal wieder hoffnungslos verdreht ist 
wieder "in Ordnung" bringen. Also mal kurz bei MINT Linux ins Repository 
geschaut. Natürlich findet sich was, aber nur ein Kommandozeilenprogramm 
das eine etwas krude Methode hat die Ausgangslage des Würfels einzugeben 
(Paket "Rubiks". Genauer gesagt drei Programme mit unterschiedlichen 
Solver-Strategien, die auch noch jedes seine eigene krude Methode hat 
die Ausgangslage einzugeben, aber das ist hier nicht das Thema).
Also bei
https://www.heise.de/download/product/cube-50629
geschaut, da gibt es ein Programm mit GUI (cube.exe), das aber einen 
Solver hat der typischerweise ca. 80 Schritte braucht, statt den 20-25 
den ein optimierter Solver in etwa benötigt. In diesem Programm kann man 
die Ausgangslage des Würfels graphisch eingeben und den Würfel dann als 
ASCII-Datei speichern. Und es läuft mit "wine" in Linux.

Was also tun? Ein kleines Python Skript schreiben, das den gespeicherten 
Würfel von cube.exe nimmt und in das Format umwandelt das das 
Kommandozeilenprogramm "rubiks_dikcube" sehen will.
Aufruf der Kette per Kommandozeile:
cat example_cube.cub | python3 cub_2_rubik_pattern.py | rubiks_dikcube 
-p
und man bekommt ca. 10 Sekunden später eine Lösung die nur ein paar 
wenige Schritte vom Optimum entfernt ist. Die Tatsache dass es 10 
Sekunden dauert lässt mich vor Ehrfurcht erstarren wie viel 
Rechenleistung für die Berechnung benötigt wird...

Ich stelle das ganze mal hier rein, nur für den Fall das es jemanden 
interessiert.

Das Programm "cube.exe" packe ich auch hier dazu. In "About" steht dass 
man das Programm frei verbreiten darf solange es nichtkommerziell 
passiert. Den Autor kann man nicht mehr fragen, denn die angegebene 
Webseite und email Adresse gibt es nicht (mehr). Damit ist 
Heise-Downloads die einzige Quelle. Falls den Admins das trotzdem nicht 
recht sein sollte, bitte die cube.zip löschen. Die andere zip Datei 
enthält nur Sachen die ich selber Programmiert habe, die ist also 
unkritisch.

Also was man braucht:
* Linux, und das Paket "rubiks" (gibt es bei MINT und Ubuntu, in anderen 
Distris heißt es möglicherweise anders)
* cube.zip und cub_2_rubik.zip entpacken, in den selben Ordner
* mit "wine Cube.exe" das GUI-Programm starten, dort seinen Würfel 
eingeben (Bei "File" -> "New Cube"), dann speichern
* in der Kommandozeile aufrufen: cat example_cube.cub | python3 
cub_2_rubik_pattern.py | rubiks_dikcube -p
* Den Würfel lösen (Kurzanleitung zur Interpretation der Ausgabe im 
Python File)

Viel Spaß damit.

Beitrag #6685719 wurde von einem Moderator gelöscht.
von Andreas M. (andreas_m62)


Lesenswert?


von Georg S. (randy)


Angehängte Dateien:

Lesenswert?

Upsi... Mir ist da ein kleines Mishap aufgefallen weswegen ich Version 
1.1 nachschieben muss...
Nur die Python Datei bekommt ein update, alles andere bleibt gleich. 
Deswegen auch nur die .py im Anhang.

von Roland E. (roland0815)


Lesenswert?

Andreas M. schrieb:
> https://magazin.spiegel.de/EpubDelivery/spiegel/pdf/14319775

Den Scan kenne ich aus einer DDR-Hobbyzeitschrift aus den 80ern... 🤣

von Andreas M. (andreas_m62)


Lesenswert?

Der Spiegel ist von 04/81.
Steht zwischen den zwei Seiten.

von cuby (Gast)


Lesenswert?

Georg S. schrieb:

> und man bekommt ca. 10 Sekunden später eine Lösung die nur ein paar
> wenige Schritte vom Optimum entfernt ist. Die Tatsache dass es 10
> Sekunden dauert lässt mich vor Ehrfurcht erstarren wie viel
> Rechenleistung für die Berechnung benötigt wird...

10 Sekunden auf einem aktuellen PC? Kann eigentlich nur an merkwürdigem 
Linux Scriptsprachen Gefrickel liegen. Oder werden stumpf per 
Brute-Force alle möglichen Zugfolgen bis zur Lösung ausprobiert?

Jedenfalls konnte ein Galaxy S2 schon vor 10 Jahren die erforderlichen 
Berechnungen ohne erkennbare Verzögerung praktisch nebenbei zwischen 
Bildauswertung und Robotersteuerung erledigen:
https://www.youtube.com/watch?v=_d0LfkIut2M

von michael_ (Gast)


Lesenswert?

Roland E. schrieb:
> Den Scan kenne ich aus einer DDR-Hobbyzeitschrift aus den 80ern... 🤣

Und abfotografiert und vergrößert auf Fotopapier.
Habe ich noch irgendwo.
Wie sich die Zeiten ändern.
practic?

von Rübezahl (Gast)


Angehängte Dateien:

Lesenswert?

Als die Lösung von Rubiks Cube Zauberwürfel 1981 im Spiegel erschien, 
habe ich mir sofort aus dem Spiegel eine Kopie gemacht. 😃👍

von Roland E. (roland0815)


Lesenswert?

michael_ schrieb:
> Roland E. schrieb:
>> Den Scan kenne ich aus einer DDR-Hobbyzeitschrift aus den 80ern... 🤣
>
> Und abfotografiert und vergrößert auf Fotopapier.
> Habe ich noch irgendwo.
> Wie sich die Zeiten ändern.
> practic?

Jepp. Mit Bauanleitung für den Würfel aus Holz...

Beitrag #6696565 wurde von einem Moderator gelöscht.
von Stefan L (Gast)


Lesenswert?

Hallo,

der Thread ist ja schon etwas cold, vor einiger Zeit hatte ich mich auch 
daran versucht mit dem ambitionierten Ziel einen KI-basierten solver 
umzusetzen, hauptsächlich mit dem Ziel etwas über KI zu lernen 
wohlwissend der cube ist jetzt nicht so das beste Puzzle für KI aber 
hoffentlich einfach genug und nicht so ausgelutscht wie MNIST & co.
Funktionsreferenz: Deepcube 
https://www.ics.uci.edu/~fagostin/assets/files/SolvingTheRubiksCubeWithDeepReinforcementLearningAndSearch_Final.pdf

Trotz einem Haufen investierter Zeit  Recherche  Geld blieb das ein 
Schrecken ohne Ende.

Dabei ist einen haufen python code rausgekommen, mit einer 
Visualisierung des Cube in einem OpenGL Window (2D) oder wahlweise eine 
Ausgabe in der Console mit Farben (via ANSI Codes), ein Bruteforce 
searcher der in 100 Jahren nicht fertig wird, ein OpenAI Modell, einige 
simple pytorch agents deren training null konvergenz gezeigt hatte 
selbst bei sehr einfachen random scrambles, ein manueller Solver der 
halt die Anfänger Lösung schritt für Schritt ausrechnet (musst sein dass 
zumindest irgendwas funktioniert)...
womit ich dann das Projekt auch beendet hatte. Immerhin konnte ich 
meinen Cube dann damit lösen.

Falls jemand Interesse daran verspürt an einem Rubiks-Cube-Solver zu 
arbeiten (mit oder ohne KI, mit Mechanik oder rein software algo), aber 
das aus Komplexität/Zeitgründen gescheut hat?
Schreibt doch mal bitte rein!

LG

von Michael U. (amiga)


Lesenswert?

Hallo,

michael_ schrieb:
> Roland E. schrieb:
>> Den Scan kenne ich aus einer DDR-Hobbyzeitschrift aus den 80ern... 🤣
>
> Und abfotografiert und vergrößert auf Fotopapier.
> Habe ich noch irgendwo.
> Wie sich die Zeiten ändern.
> practic?

Ja, practic 3/81...
Die rausgerissenen Seiten müßte ich sogar noch irgendwo haben.

Gruß aus Berlin
Michael

von Markus (Gast)


Lesenswert?

Andreas M. schrieb:
> https://magazin.spiegel.de/EpubDelivery/spiegel/pdf/14319775

Es gab im Spiegel (oder Stern?) in den 90er Jahren auch mal eine Lösung 
für ein Problem, das nicht auf diese Weise gelöst werden kann: Zunächst 
wurde mit dem gelösten Würfel auf jeder Seite die Mittenfläche und eine 
anliegende Kante mit zwei gegenüberliegenden Pfeilspitzen markiert. Dann 
wird der Würfel beliebig verdreht. Nach dem Lösen sollen die 
Pfeilspitzen wieder gegenüber liegen. Hat jemand von Euch auch dafür 
eine Lösung? Ich habe hier einen Würfel mit Bildern auf den Flächen, 
wofür die passende Lösung hilfreich wäre. Vielen Dank.

von A. S. (Gast)


Lesenswert?

Bei uns konnte man damals die 2 Seiten  als Kopie  in der Stadtbücherei 
kaufen.  Für  60 oder 80 Pfennig.

von asd (Gast)


Lesenswert?

Heutzutage findet man auch was im Internet:
https://speedcube.de/lbl.php

von Markus (Gast)


Lesenswert?

asd schrieb:
> Heutzutage findet man auch was im Internet:
> https://speedcube.de/lbl.php

Ja, stimmt. Die Lösung in dem Link passt nicht zu dem Problem, besser 
ist dieser hier: https://freshcuber.de/loesung-uhrzeigerproblem/.

von Nick (Gast)


Lesenswert?

Markus schrieb:
> ein Problem, das nicht auf diese Weise gelöst werden kann: Zunächst
> wurde mit dem gelösten Würfel auf jeder Seite die Mittenfläche und eine
> anliegende Kante mit zwei gegenüberliegenden Pfeilspitzen markiert. Dann
> wird der Würfel beliebig verdreht. Nach dem Lösen sollen die
> Pfeilspitzen wieder gegenüber liegen.

Ist das nicht automatisch der Fall, wenn der Würfel gelöst ist?
Oder gibt es mehrere Stellungen die zu einem gelösten Würfel führen???

Beitrag #6830751 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.