Hey liebe Leute,
ich bin mit meinem Teamkollegen völlig am verzweifeln. Wir sollen für die uni ein rekursives Programm schreiben.
Kleine Info zu dem Programm:
Vier Würfel mit farbigen Flächen werden aufeinandergetürmt und so rotiert, dass an den Seitenwänden keine der vier Farben(Rotblau,grün,gelb) doppelt auftaucht.
Aufgabenstellung:
Entwickeln Sie ein System von Klassen, welches für jeweils vier aufeinandergestapelte Würfel rekursiv alle durch Rotation möglichen Turmstellungen mit paarweise verschiedenfarbigen Seitenwänden berechnet und diese geeignet ausgibt. Dabei werden Rotationsinvariante Lösungen erkannt und nur einmal als Lösung aufgenommen.
Also unser größtes Problem liegt darin, die vier Würfel zu drehen. Wir haben absolut keine Ahnung wie wir die Rekursion umsetzen sollen.
Wir haben einen kleinen Lösungsansatz den ich kurz beschreiben kann.
Wir haben bisher drei Klassen erstellt. Eine Würfel,InputOutput und Turm Klasse.
In der Würfel Klasse haben wir festgelegt wie ein Würfel aussehen soll. Also haben wir ein charArray mit 6 Zeichen erstellt. Das Objekt Würfel wird in der InputOutput Klasse über die User Eingabe 4 mal in eine neue ArrayList mit den Namen Turm gespeichert. In dieser müssten dann 24 Zeichen enthalten sein. Wir haben uns überlegt die Würfel dann aus der Turm Liste zu holen und zu vergleichen (über den Index). Aber wir haben wie schon gesagt absolut keine Ahnung wie wir diese Rotationen und die Vergleiche implementieren sollen. Außerdem müssten die Farben den Würfel fest zugewiesen werden (oder?) also ich meine damit, dass z.B. die 1 der 6 gegenüberliegt. Also wenn der User zuerst rot und zuletzt blau eingibt dann müssen diese färben gegenüberliegend sein um bei der Rotation nicht durcheinander zu kommen und damit der Würfel nicht verfälscht wird. Wie kann man das am besten erreichen ? Wir haben uns überlegt eine Tupel Klasse zu erstellen mit den Klassenvariablen back, front,left,right (integer)..usw. und den Konstruktor dann irgendwie in der Turmklasse für die Rekusion zu übergeben.
Habt ihr vielleicht ein paar bessere Lösungsvorschläge oder könntet uns sagen ob wir mit den Grundgedanken richtig liegen und wie wir am besten die Rekursion angehen ?
Vielen Dank im Voraus und schöne Pfingsten.
ich bin mit meinem Teamkollegen völlig am verzweifeln. Wir sollen für die uni ein rekursives Programm schreiben.
Kleine Info zu dem Programm:
Vier Würfel mit farbigen Flächen werden aufeinandergetürmt und so rotiert, dass an den Seitenwänden keine der vier Farben(Rotblau,grün,gelb) doppelt auftaucht.
Aufgabenstellung:
Entwickeln Sie ein System von Klassen, welches für jeweils vier aufeinandergestapelte Würfel rekursiv alle durch Rotation möglichen Turmstellungen mit paarweise verschiedenfarbigen Seitenwänden berechnet und diese geeignet ausgibt. Dabei werden Rotationsinvariante Lösungen erkannt und nur einmal als Lösung aufgenommen.
Also unser größtes Problem liegt darin, die vier Würfel zu drehen. Wir haben absolut keine Ahnung wie wir die Rekursion umsetzen sollen.
Wir haben einen kleinen Lösungsansatz den ich kurz beschreiben kann.
Wir haben bisher drei Klassen erstellt. Eine Würfel,InputOutput und Turm Klasse.
In der Würfel Klasse haben wir festgelegt wie ein Würfel aussehen soll. Also haben wir ein charArray mit 6 Zeichen erstellt. Das Objekt Würfel wird in der InputOutput Klasse über die User Eingabe 4 mal in eine neue ArrayList mit den Namen Turm gespeichert. In dieser müssten dann 24 Zeichen enthalten sein. Wir haben uns überlegt die Würfel dann aus der Turm Liste zu holen und zu vergleichen (über den Index). Aber wir haben wie schon gesagt absolut keine Ahnung wie wir diese Rotationen und die Vergleiche implementieren sollen. Außerdem müssten die Farben den Würfel fest zugewiesen werden (oder?) also ich meine damit, dass z.B. die 1 der 6 gegenüberliegt. Also wenn der User zuerst rot und zuletzt blau eingibt dann müssen diese färben gegenüberliegend sein um bei der Rotation nicht durcheinander zu kommen und damit der Würfel nicht verfälscht wird. Wie kann man das am besten erreichen ? Wir haben uns überlegt eine Tupel Klasse zu erstellen mit den Klassenvariablen back, front,left,right (integer)..usw. und den Konstruktor dann irgendwie in der Turmklasse für die Rekusion zu übergeben.
Habt ihr vielleicht ein paar bessere Lösungsvorschläge oder könntet uns sagen ob wir mit den Grundgedanken richtig liegen und wie wir am besten die Rekursion angehen ?
Vielen Dank im Voraus und schöne Pfingsten.