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