AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rubik's Cube - Wie speichern?

Ein Thema von Fussball-Robby · begonnen am 6. Mär 2009 · letzter Beitrag vom 7. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#1

Rubik's Cube - Wie speichern?

  Alt 6. Mär 2009, 20:26
Hey,

ich möchte ein Programm zur Simulation eines Rubik's Cube schreiben.
Jetzt frage ich mich, wie ich die Stellung der einzelnen "Steine" speichern soll. Also nicht das Speichern in eine Datei, sondern im Programm. Als erstes dachte ich, nehme ich einfach ein dreidimensionales Array, das ist aber mehr oder weniger Quatsch. Die Farben jeder Seite einzeln zu speichern finde ich jetzt auch nicht so gut, da ich nachher eventuell prüfen muss (bei Benutzereingabe), ob jeder Stein einmal verwendet wurde, dass wäre dann relativ unpraktisch.
Also, was würdet ihr mir vorschlagen? Zu berücksichtigen ist, dass die Drehungen der einzelnen Seiten und die dadurch entstehende Verschiebung der Steine nachher am besten einfach zu berechnen sein soll.

Vielen Dank für die Hilfe!
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Rubik's Cube - Wie speichern?

  Alt 6. Mär 2009, 20:37
Mal im Ansatz mathematisch anzugehen, könntest du dir ja die Grundvoraussetzungen ja anschauen.

Ein Stein hat folgende Farben: rot, orange, blau, grün, weiß, gelb.
Von jeder Farbe gibt es 3² = 9 Steine.
Es gibt 6 Seiten.

Somit wäre ein Array doch ein Lösungsweg.

Ein Array mit 6 Feldern, wobei jedes Feld ein 2-dimensionales Array repäsentiert, welches den Stein(seine Position auf der Seite) und seine Farbe repräsentiert.

Was anderes fällt mir eben nicht ein, obwohl es da bestimmt bessere mathematische konzepte gibt. Eventuell googlest du mal, da wird es mit Sicherheit einige Ansätze geben ...


Zitat von fLaSh11:
Zitat von quendolineDD:
Von jeder Farbe gibt es 3³ = 9 Steine.

am besten korrigieren
Es gibt Zeiten in denen Mann einfach nicht denken sollte
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Rubik's Cube - Wie speichern?

  Alt 6. Mär 2009, 20:41
Zitat von quendolineDD:
Ein Array mit 6 Feldern, wobei jedes Feld ein 2-dimensionales Array repäsentiert, welches den Stein(seine Position auf der Seite) und seine Farbe repräsentiert.
Erstmal danke für die Hilfe. So könnte ich es natürlich machen. Aber was passiert, wenn ich jetzt die Rote seite drehe? Bei dieser Lösung müsste ich dann wohl jeden Stein einzeln zuordnen. Und gerade das will ich möglichst nicht, ich suche eine Lösung, bei der die Seiten in irgendeiner Weise "zusammenhängen", damit Drehungen leichter zu berechnen sind.
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Rubik's Cube - Wie speichern?

  Alt 6. Mär 2009, 21:32
Dann nimm doch das dreidimensionale Array. Mit dem ungenutzten Feld in der Mitte kann man ja leben...
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#5

Re: Rubik's Cube - Wie speichern?

  Alt 6. Mär 2009, 22:57
Zitat von quendolineDD:
Von jeder Farbe gibt es 3³ = 9 Steine.

am besten korrigieren
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Rubik's Cube - Wie speichern?

  Alt 6. Mär 2009, 23:35
Eine zweidimensionale Tabelle reicht auch (mit mehr Leer-Zellen).

Die Verschiebungen/Drehungen werden dadurch nicht weniger, aber evtl einfacher zu durchschauen:
Code:
.
      1 1 1
      1 1 1
      1 1 1
5 5 5 2 2 2 6 6 6
5 5 5 2 2 2 6 6 6
5 5 5 2 2 2 6 6 6
      3 3 3
      3 3 3
      3 3 3
      4 4 4
      4 4 4
      4 4 4
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Rubik's Cube - Wie speichern?

  Alt 7. Mär 2009, 08:11
Wenn es dir eine Hilfe für deine Entscheidung ist.

Ich habe in meinem Rubik Programm ein 3-Deimensionales Array genommen. Das schien mir die "realistischte" Darstellung und hat auch wunderbar funktioniert.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Rubik's Cube - Wie speichern?

  Alt 7. Mär 2009, 16:01
Zitat von Satty67:
Eine zweidimensionale Tabelle reicht auch (mit mehr Leer-Zellen).

Die Verschiebungen/Drehungen werden dadurch nicht weniger, aber evtl einfacher zu durchschauen:
Code:
.
      1 1 1
      1 1 1
      1 1 1
5 5 5 2 2 2 6 6 6
5 5 5 2 2 2 6 6 6
5 5 5 2 2 2 6 6 6
      3 3 3
      3 3 3
      3 3 3
      4 4 4
      4 4 4
      4 4 4
Also bei dem Teil muss ich lange nachdenken, an welchen Stellen ich das Teil verändern muss, wenn ich es um eine Achse drehe...
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Rubik's Cube - Wie speichern?

  Alt 7. Mär 2009, 16:41
Code:
\ 1 2 3 4 5 6 7 8 9
1       1 1 1
2       1 1 1
3       1 1 1
4 5 5 5 2 2 2 6 6 6
5 5 5 5 2 2 2 6 6 6
6 5 5 5 2 2 2 6 6 6
7       3 3 3
8       3 3 3
9       3 3 3
10      4 4 4
11      4 4 4
12      4 4 4

Drehe ich jetzt zum Beispiel die oberste Zeile horizontal einmal sieht das dann so aus

Code:
\ 1 2 3 4 5 6 7 8 9
1       1 1 1
2       1 1 1
3       1 1 1
4 2 2 2 6 6 6 4 4 4
5 5 5 5 2 2 2 6 6 6
6 5 5 5 2 2 2 6 6 6
7       3 3 3
8       3 3 3
9       3 3 3
10      5 5 5
11      4 4 4
12      4 4 4
Wer findet denmathematischen Ansatz?
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#10

Re: Rubik's Cube - Wie speichern?

  Alt 7. Mär 2009, 16:57
wenn man sich den "4." Teil nochmal an anderer Stelle vorstellt, dann wird es wohl einfacher.

man muß also beim Drehen einfach nur alles in einer Linie verschieben
Code:
\ 1 2 3 4 5 6 7 8 9 . . .
1       1 1 1
2       1 1 1
3       1 1 1
4 2 2 2 6 6 6 4 4 4 [color=gray]5 5 5[/color]
5 5 5 5 2 2 2 6 6 6 [color=gray]4 4 4[/color]
6 5 5 5 2 2 2 6 6 6 [color=gray]4 4 4[/color]
7       3 3 3
8       3 3 3
9       3 3 3
10      4 4 4
11      4 4 4
12      5 5 5
wobei quendolineDD einen Fehler hat ... der 4. ist spiegelverkehrt (klapp ihn mal nach hinten rum)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz