Alle moeglichen Kombinationen (X aus X) mit Vorgaben

OwlJ

Grünschnabel
Hallo!

Ich stehe gerade vor einem Problem und finde keine praktikable Loesung:

Es gibt z.B. die Zahlen
Code:
1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5
Was ich nun suche, ist eine Moeglichkeit um mir die Stellen aller Moeglichkeiten ausgibt, wenn eine Zahl nur einmal vorkommen darf, aber jede Zahl enthalten sein muss. Die Laenge der Zahlenkette betraegt ueber 50 Zahlen, aus denen jedoch maximal 8 ausgewaelt waeren.
Fuer das Beispiel waere das also
Code:
0, 3, 6, 9, 12
1, 3, 6, 9, 12
2, 3, 6, 9, 12
0, 4, 6, 9, 12
1, 4, 6, 9, 12
usw.

Wobei die Reihenfolge der Zahlen nicht bekannt ist. Es koennte ebenso die Zahlenfolge
Code:
1, 2, 3, 5, 4, 5, 4, 3, 2, 1
sein. Dann muessten die Moeglichen Stellen etwa so aussehen:
Code:
0, 1, 2, 3, 4
oder
3, 4, 7, 8, 9
4, 5, 7, 8, 9

Wie koennte die Funktion in Java aussehen?

Danke schonmal!
Gruesse, OwlJ
 
Das verstehe ich nicht.
Wenn "1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5" die Angabe ist, warum ist die erste Zahlenkette dann "0, 3, 6, 9, 12"?
0, 3, 9 und 12 kommen in der Angabe doch nicht vor.
So wie ich die Erklärung verstanden habe, sollte es doch so aussehen:

Code:
1, 2, 3, 4, 5
2, 1, 3, 4, 5
2, 3, 1, 4, 5
2, 3, 4, 1, 5
2, 3, 4, 5, 1
1, 3, 2, 4, 5
1, 3, 4, 2, 5
usw.
 
Mir geht es um die Positionen der Zahlen z.B. in einem Array. "0, 3, 6, 9, 12" sind die Positionen der gewaehlten Zahlen. Die bedingung fuer die gewaehlten Zahlen ist, dass jede Zahl nur einmal vorkommt und alle Zahlen (1-5) enthalten sein muessen.
Einfach alle Kombinationen von den Zahlen zu bekommen ist nicht das was ich suche - dafuer habe ich schon Codebeispiele gefunden.
 
Also wenn ich das richtig verstehe brauchst du eigentlich nur einen Ansatz, den Rest hast du eigentlich schon...
Wie wäre es wie folgt...

1. Du baust dir eine HashMap, welche ArrayLists beinhaltet.
2. Ich gehe davon aus, dass deine Zahlenfolge eine String-Kette ist, dieses splittest du über ein definiertes Zeichen und erhälst ein String-Array.
3. Dieses String-Array durchläufst du. Jedes mal, wenn du eine Zahl findest, die als Key noch nicht in der HashMap vorkommt, fügst du eine ArrayList mit diesem Key hinzu. In der ArrayList werden die Positionen gespeichert, an der der entsprechende Key in der Zahlenfolge vorkommt.
4. Aus diesen Hash-Elementen kannst du dir Grundzusammensetzungen basteln. (Achtung viele!)
5. Diese Grundzusammensetzungen kannst du wie üblich in jegliche Reihenfolge bringen. (noch viel mehr!)
 
Also du hast z.B. 5 Zahlen, die in einem Array der Länge 50 jeweils einen Platz belegen sollen? Oder habe ich das falsch verstanden?
 
Also so wie ich es verstanden habe hat er ein Zahlenarray/Zahlenkette im String oder ähnliches. Daraus will er nun alle möglichen Zahlenkombinationen in beliebiger Reihenfolge beispielsweise der Länge 5 haben, die keine Zahl doppelt beinhaltet. Wichtig ist hier aber, dass nicht die Zahlen selber, sondern ihre Position angegeben wird.

Beispiel: 2 Zahlen 1 1 2 3

Möglicheiche Positionen: 1 3, 1 4 , 3 4 und die "verwurschtelt" ergibt noch 3 1, 4 1, 4 3

Im größeren Umfang wird da snatürlich seeehhhhrrr viel...

@OwlJ was ich mich vorallem frage ist, was willst du hinterher eigentlich mit dieser Liste machen?
 
Zuletzt bearbeitet:
Ich vermute, er will irgendeinen brute-force-Solver programmieren. Aber ich wüsste gerne, für welches Problem?
 

Neue Beiträge

Zurück