Ich will ein Rubiks Cube lösender NXT Roboter bauen.
Mein Problem ist: ich suche ein Algorithmus um den Cube zu lösen (ausser Bruteforce alle Möglichkeiten ausprobieren, da der NXT Brick nicht genug Rechenkraft hat) alle die ich bis jetzt gefunden habe sind für Menschen welche vorwissen und intuition haben. Kennt ihr ein Algorithmus?
Danke im voraus.
-fail
Rubiks Cube; Lego NXT
@fail: Was meinst Du mit Vorwissen und Intuition? Es gibt soweit ich weiss mindestens zwei Lösunganleitungen, die wenn nicht optimal, zumindest nah dran sind. Die sollte man problemlos in Code umsetzen können. Wobei problemlos natürlich nicht ausschliesst, dass das ein bisschen Arbeit macht.
Edit: http://www.zauberwuerfel.de/zauberwuerfel-loesen/
Den dort erwähnten Spiegel-Artikel hatte ich mir in den 80ern mal in der Leihbücherei fotokopiert, als ich den Würfel zum Geburtstag geschenkt bekam.
Edit: http://www.zauberwuerfel.de/zauberwuerfel-loesen/
Den dort erwähnten Spiegel-Artikel hatte ich mir in den 80ern mal in der Leihbücherei fotokopiert, als ich den Würfel zum Geburtstag geschenkt bekam.
Es gibt ganze Communities von Leuten welche sich immer wieder neue Arten beibringen den Würfel schnellstmöglich zu lösen. Bemüh mal Google, programmier Funktionen für die grundlegenden Bewegungen/Translationen und implementiere dann den Algorithmus deiner Wahl. Sonderlich schwierig sollte das nicht sein.
http://www.youtube.com/watch?v=mzRV7Q5dZUY
Hab ich noch gefunden, ist sehr gut erklärt.
Noch eine Frage. Wie kann ich so ein Würfel am besten darstellen? Als 3D Liste, und evtl. eine Klasse für Steine.
Oder 6 2D Listen. Up, Down, Right, Left, Front, Back
andere Vorschläge?
Hab ich noch gefunden, ist sehr gut erklärt.
Noch eine Frage. Wie kann ich so ein Würfel am besten darstellen? Als 3D Liste, und evtl. eine Klasse für Steine.
Oder 6 2D Listen. Up, Down, Right, Left, Front, Back
andere Vorschläge?
Hallo.
webspider hat dir die Datenstruktur doch schon verraten. Es bietet sich eine Klasse für den Würfel an, auf denen du abstrakt die Operationen durchführen kannst. Als interne Struktur ist wohl eine dreidimensionale Liste am einfachsten. Eine Klasse für einen Stein ist vollkommen überflüssig, die einzige Eigenschaft eines Steins ist die Farbe. Das kannst du aber auch leicht mit Konstanten lösen.
webspider hat dir die Datenstruktur doch schon verraten. Es bietet sich eine Klasse für den Würfel an, auf denen du abstrakt die Operationen durchführen kannst. Als interne Struktur ist wohl eine dreidimensionale Liste am einfachsten. Eine Klasse für einen Stein ist vollkommen überflüssig, die einzige Eigenschaft eines Steins ist die Farbe. Das kannst du aber auch leicht mit Konstanten lösen.
Das Leben ist wie ein Tennisball.
@fail: Das macht doch nichts, wenn Du sechs 2D-Strukturen hast, dann brauchst Du keinen Stein mehr, weil die Seiten von den Steinen ja durch die sechs Seitenstrukturen abgedeckt sind.
Ja, ich dachte du meinst eine 3D Liste
z.B.
[
First Layer
[[Steineigenschaften,Steineigenschaften,Steineigenschaften],
.............
, Second Layer
[[Steineigenschaften,Steineigenschaften,Steineigenschaften],
.......
Third Layer
[[Steineigenschaften,Steineigenschaften,Steineigenschaften],
....
z.B.
[
First Layer
[[Steineigenschaften,Steineigenschaften,Steineigenschaften],
.............
, Second Layer
[[Steineigenschaften,Steineigenschaften,Steineigenschaften],
.......
Third Layer
[[Steineigenschaften,Steineigenschaften,Steineigenschaften],
....
@fail: Ich würde das mit 2D-Seiten-Strukturen modellieren. Das als 3D-Struktur zu modellieren macht die Sache unnötig kompliziert. Ein Modell sollte die Idee und die benötigten Daten repräsentieren, nicht zwingend die physikalischen Eigenschaften des realen Objekts, wenn die zum Lösen gar nicht nötig sind.
das ist sehr interessant