Rubiks Cube; Lego NXT

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
fail
User
Beiträge: 122
Registriert: Freitag 11. Januar 2013, 09:47

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
BlackJack

@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.
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

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.
fail
User
Beiträge: 122
Registriert: Freitag 11. Januar 2013, 09:47

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?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Das Leben ist wie ein Tennisball.
fail
User
Beiträge: 122
Registriert: Freitag 11. Januar 2013, 09:47

Ja aber ein Stein hat mehrere Seiten mit anderen Farben
BlackJack

@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.
fail
User
Beiträge: 122
Registriert: Freitag 11. Januar 2013, 09:47

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],
....
BlackJack

@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.
Miche
User
Beiträge: 1
Registriert: Sonntag 1. Juni 2014, 16:14
Kontaktdaten:

das ist sehr interessant
Antworten