Tripel

Hi,
wie kann man den aus eine beliebigen Menge die Tripel erstellen:
Bsp.:
Menge a,b,c,d
Ergebnis: abc, abd, acd, bcd

Nach welcher Formel kann man hier vorgehen?

Unter http://javagl.de/utils/javagl-utils-math-0.1.jar gibt’s ein (inoffizielles) JAR, wo einige Klassen für solche Fragen drin sind - u.a. „ChoiceIterable“, mit dem man genau sowas machen kann: http://javagl.de/utils/doc-math/de/javagl/utils/math/combinatorics/ChoiceIterable.html

Im Endeffekt ist das nicht anderes als zählen :smiley:

Danke!

Gibt es eigentlich ein Formel hierfür?

Ich habs!!!

für Tripel bestimmung wobei abc=cba=bca …

X=(n*(n-1)*(n-2))/6:p

Nuja was heißt „Formel“ :confused: Eine Formel, um auszurechnen, wie viele solcher Tripel es gibt, gibt es: Für n Elemente, von denen k (in diesem Fall 3) ausgewählt werden, gibt es
n!/(k!*(n-k)!)
Kombinationen.

Für die Berechnung dieser Kombinationen gibt es einen Algorithmus, und der macht. Aber ehrlich gesagt war die Aussage oben, dass der nur zählt für diesen Fall eigentlich falsch: Es kommen ja keine Elemente doppelt vor.

In dem source code int der verlinkten Datei steht auch eine kurze Erklärung


                // The fist choice when choosing 3 of 5 elements consists
                // of 0,1,2. Subsequent choices are created by increasing
                // the last element of this sequence:
                // 0,1,3
                // 0,1,4
                // until the last element of the choice has reached the
                // maximum value. Then, the earlier elements of the 
                // sequence are increased recursively, while obeying the 
                // maximum value each element may have so that there may 
                // still be values assigned to the subsequent elements.
                // For the example: 
                // - The element with index 2 may have maximum value 4.
                // - The element with index 1 may have maximum value 3.
                // - The element with index 0 may have maximum value 2.
                // Each time that the value of one of these elements is
                // increased, the subsequent elements will simply receive
                // the subsequent values.

Hmja… ob das weiterhilft? :confused: Vielleicht mal mit einem kleinen Testfall durchspielen…

EDIT: Jaja, zu langsam :o