Kreuzprodukt in Java Berechnen (komplex)

Hallo,

ich habe derzeit ein ungelöstes Problem. Ich möchte gerne in Java das Kreuzprodukt des Inhaltes von Arrays berechnen. Wenn ich die ANzahl der Arrays im Voraus kenne ist das ganze auch kein Problem. Dann verschachtle ich diese einfach in Schleiben und erhalte sehr einfach (wenn man das Ergebnis z.B. als String ausgibt) die entsprechenden „Permutation“/Kreuzprodukt

byte[] a1 = {1,2,3}
byte[] a2 = {1,2,3}
byte[] a3 = {1,2,3}

String[] ergebnis = new Array[3^3]

for (a1…) {
for (a2…){
for (a3…)}
ergebnis[counter]=a1+":"+a2+":"+a3;
counter++;
}
}
}

Das Ziel ist aber nicht nur wie hier 3 Arrays zu nutzen, sondern generisch, beliebig viele. Das ganz sollte in einer Methode implementiert sein, der man aine beliebige Anzahl an Arrays übergibt (mit Inahlten wie oben) und als Ergebnis dann ein einziges Array erhalt, das die Kombinationen enthählt.
(beispielhaft für 3 arrays)
111
112
113
121
122

Mein Problem, ich habe bis dato noch keine Möglichketi gefunden das generisch zu implementieren, so dass ich beliebig viele Arrays übergeben kann, denn ich weiss nicht wie ich die schleifen dann für die zusätzlichen Arrays erweitern soll.

EIn Lösung wäre zur Laufzeit in java den SourceCode mit den zusätzlichen schleifen
for (a1)
bis
for (aN)
zur _Laufzeit_ zu erzeugen und dann das ganze mit der Jakarta/Commons projekt zur Laufzeit zu compilieren und dann aufzurufen. Allerdings kann das doch nicht die Lösung für so ein einfaches Problem sein. (Denn wenn man die Anzahl im Voraus kennt kann man das mit den schleifen ja sein einfach programmieren, wenn auch mit steigender ArrayAnzahl der Programmieraufwand startk zunimmt.

Evtl. läßt sich das über Vektoren realisieren!? Hab dazu aber die mal gelernten Basics schon wieder vergessen;-(

Wer kann mir hier Tipps geben. Vielen DAnk!
julian

Auch hallo.

Das Ziel ist aber nicht nur wie hier 3 Arrays zu nutzen,
sondern generisch, beliebig viele. Das ganz sollte in einer
Methode implementiert sein, der man aine beliebige Anzahl an
Arrays übergibt (mit Inahlten wie oben) und als Ergebnis dann
ein einziges Array erhalt, das die Kombinationen enthählt.

Hier könnte das Stichwort ‚Stacks‘ evtl. weiterhelfen. Immerhin lässt diese Datenstruktur etwas Derartiges zu: http://de.wikipedia.org/wiki/Stapelspeicher

Mein Problem, ich habe bis dato noch keine Möglichketi
gefunden das generisch zu implementieren, so dass ich beliebig
viele Arrays übergeben kann, denn ich weiss nicht wie ich die
schleifen dann für die zusätzlichen Arrays erweitern soll.

…und mit welcher Java Version ? Generics gibt es ja auch erst ab Java 1.5 (Tiger). Ein Openbook zum Thema: http://www.galileocomputing.de/openbook/javainsel5/

HTH
mfg M.L.

also wenn du beliebig viele Parameter an eine Funktion übergeben willst, kannst du ab Java 1.5 Varargs =>http://java.sun.com/j2se/1.5.0/docs/guide/language/v…
verwenden oder falls dies nicht geht die Arrays einfach in eine Collection(z.B.) ArrayList packen und die ArrayList übergeben.

lg
georg

Hallo,

du musst doch nur die Funktion rekursiv aufrufen.
Dabei mußt du dir nur einfallen lassen, wie du unbegrenzt Matritzen übergibst (z.B. Object-Array)

Gruß

Peter