Kombinatorik UDF ArrayCombinations - Verschiedene Möglichkeiten der Zusammenstellung von Elementen einer Menge

  • Letztens gab es mal wieder eine Aufgabe die grundlegend mit Kombinatorik gelöst werden konnte.
    Dabei ist mir mal wieder bewusst geworden, dass die beiden Kombinatorik-Funktionen in der Array.au3 _ArrayCombinations und _ArrayPermute offensichtlich ziemlich willkürlich rausgepickt wurden.
    Ebenso wichtige Spielarten der Kombinatorik wie Kombination mit Zurücklegen oder Variationen mit und ohne Zurücklegen werden davon überhaupt nicht abgedeckt.
    Darüber hinaus sind sie auch meiner Meinung nach wahnsinnig beknackt realisiert, denn die einzige Möglichkeit für deren Rückgabewert ist ein zusammengepappter String für jede Gruppe wo man dann selbst zusehen kann wie man wieder an die Einzelelemente kommt.

    Kurz - es war Zeit eine eigene UDF hierfür zu schreiben.
    Diese beinhaltet folgende Funktionen:

    Code
    _comb_Combinations                - ermittelt k Kombinationen aus n Elementen ohne Zurücklegen
    _comb_Combinations_Repetition     - ermittelt k Kombinationen aus n Elementen mit Zurücklegen
    _comb_Combinations_Repetition_All - ermittelt 1..k Kombinationen aus n Elementen mit Zurücklegen
    _comb_Permute                     - ermittelt alle Permutationen aus n Elementen ohne Zurücklegen
    _comb_Variations                  - ermittelt k Variationen aus n Elementen ohne Zurücklegen
    _comb_Variations_Repetition       - ermittelt k Variationen aus n Elementen mit Zurücklegen
    _comb_ArrayInArrayTo2D            - Hilfsfunktion um Array-In-Array-Konstrukte in ein 2D-Array zu konvertieren
    __comb_binomialcoefficient        - berechnet den Binomialkoeffizienten "n über k"
    __comb_factorial                  - berechnet die Fakultät "x!"
    _comb_Permute_restricted          - Spezialfall der Permutation bei der für jedes Element angegeben wird wo es stehen darf (Bsp: https://autoit.de/thread/87422-beschreibung-von-punkten-und-ihren-kanten-zu-anderen-punkten/?postID=704373#post704373)

    Beispiel zur Benutzung

    • Offizieller Beitrag

    Kombinatorik und Rationale Zahlen waren zwar in meinem fakultativen Mathe-Unterricht (heute nennt sich das wohl Leistungskurs) enthalten. Ich konnte zwar damit umgehen, mich aber nicht wirklich für begeistern. Insofern ist diese UDF eine echte Bereicherung für den Fall, dass man mal was "kombinieren" muss. :P

    Danke AspirinJunkie dafür.

  • Oh vielen Dank schonmal, dass du den Thread mit einem "offiziellem Beitrag" adelst.... :D

    Ja ich denke auch, dass man das bisschen von der mathematischen Ebene trennen muss.

    Die Kunst ist hierbei darauf zu kommen, dass das Problem, was man gerade zu lösen hat, thematisch damit zu tun hat.
    Deswegen habe ich im Titel ja auch etwas allgemeiner von "verschiedenen Zusammenstellungen von Elementen" geschrieben in der Hoffnung somit etwas weniger Abschreckung zu erzeugen.