ArrayPlus-UDF - weitere Helferlein für den täglichen Umgang mit Arrays

  • Folgende UDF ist als Ergänzung zur Array.au3 gedacht, welche noch mehr ermöglicht, flexibler ist und grundsätzlich den Programmieralltag vereinfachen soll.
    Eigentlich habe ich nur eine Funktion basteln wollen, welche analog zu _ArrayDisplay Arrays hübsch in der Console ausgeben soll (die _Array2String()).
    Stattdessen sind ein paar feine Funktionen zusätzlich entstanden und diese habe ich dann durch bereits vorhandene thematisch passende Funktionen aus meiner DynArray.au3 ergänzt.


    Ich habe mir Mühe gegeben die UDF sauber und umfangreich durch Funktionsheader zu dokumentieren.
    Ebenso gibt es eine umfangreiche Beispieldatei dazu, welche den Umgang mit den wichtigsten Funktionen versucht zu veranschaulichen.


    Neben der vollständigen Funktionsliste unten hier meine persönlichen Highlights um eine erste Vorstellung zu erhalten:

    • _ArraySlice(): Slice Funktionalität wie von Python bekannt = Maximal flexible kompakt geschriebene Extraktion von Bereichen, Spalten, Zeilen etc. aus einem Array (Beispiel: _ArraySlice($aA, "[:-3][::-1]") = Alle Zeilen bis auf die 3 letzten zurückgeben und dabei die Reihenfolge der Spalten umdrehen) - die Beispiele in der _ArrayPlus_Examples.au3 lohnen hierzu.
    • _ArrayCreate(): Arrays inline erstellen als 1D/2D/array-in-array mit vorbelegten Werten oder Erstellung von Sequenzen wie von range (wieder Python) bekannt.
    • _Array2String(): Arrays endlich mal schick in der Console ausgeben, inkl. ausrichten am Dezimaltrennzeichen, Rahmen etc.
    • Sortieren, suchen, analysieren von Arrays, deren Werte eben keine Standardtypen sind sondern spezielle Sortier/Vergleichs-Verhältnisse haben.

    Funktionsliste:

    Funktion Beschreibung
    _ArrayCreate Erstellung von 1D/2D-Arrays oder Array-In-Arrays in einer Code-Zeile; unterstützt python-ähnliche Range-Syntax zur Erstellung von Sequenzen
    _ArrayRangeCreate erzeugt eine Sequenz als 1D-Array - hauptsächlich Hilfsfunktion für _ArrayCreate
    _Array2dToAinA konvertiert ein 2D-Array in ein Array-in-Array
    _ArrayAinATo2d konvertiert ein Array-in-Array in ein 2D-Array
    _Array2String gibt ein 1D/2D-Array übersichtlich auf der Konsole oder einer Variablen aus
    _ArrayAlignDec richtet ein 1D-Array oder eine Spalte eines 2D-Arrays am Dezimalpunkt oder rechtsbündig aus
    _ArrayMap wendet eine Funktion auf jedes Element eines Arrays an
    _ArrayReduce reduziert die Elemente eines Arrays auf einen Wert mit einer externen Funktion
    _ArrayFilter filtert die Elemente eines Arrays mit einer externen Funktion
    _ArrayDeleteByCondition löscht alle leeren String-Elemente oder solche, die eine benutzerdefinierte Bedingung in einem Array erfüllen
    _ArraySortFlexible sortiert ein Array mit einer benutzerdefinierten Sortierregel
    _ArraySortInsertion sortiert ein Array mit einer benutzerdefinierten Sortierregel mit dem Insertion-Sort-Algorithmus
    _ArraySortSelection sortiert ein Array mit einer benutzerdefinierten Sortierregel mit dem Selection-Sort-Algorithmus (minimale Anzahl von Vertauschungen)
    _ArrayIsSorted prüft, ob ein Array bereits sortiert ist (unter Verwendung einer benutzerdefinierten Vergleichsfunktion)
    _ArrayHeapSortBinary sortiert ein Array mit dem Binary-Min-Heap-Sort Algorithmus (mit Hilfe einer Benutzer-Vergleichsfunktion)
    _ArrayHeapSortTernary sortiert ein Array mit dem Ternary-Min-Heap-Sort Algorithmus (mit Hilfe einer Benutzer-Vergleichsfunktion)
    _ArrayBinarySearchFlex führt eine binäre Suche für ein entsprechend sortiertes Array unter Verwendung einer individuellen Vergleichsfunktion durch
    _ArrayGetMax ermittelt das Element mit dem Maximalwert unter Verwendung einer Benutzervergleichsfunktion
    _ArrayGetMin ermittelt das Element mit dem kleinsten Wert mit Hilfe einer Benutzervergleichsfunktion
    _ArrayGetNthBiggestElement ermittelt das n-te größte Element (z.B.: Medianwert) in einem unsortierten Array, ohne es zu sortieren (schneller)
  • Cooooool.

    Das sage ich ja selten. Aber genau über soetwas habe ich gerade nachgedacht. Also nicht Arry und so, sondern die eine oder andere Funktion die Du geschrieben hast kommt dem gleich, was ich dachte: Das wäre gut wenn das möglich wäre.

    Werde ich mir später ausführlich anschauen !


    DANKE ! ! !

    ...... Lieben Gruß, ........
    ...........
    Alina ............

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Ich habe die Deutsche Hilfe auf meinem PC und
    OrganizeIncludes ist beim Scripten mein bester
    Freund. Okay?

  • Auch von mir ein großes Dankeschön :thumbup:

    Einige der Features hatte ich mir in der Vergangenheit zwar bereits selbst "zusammengebastelt", aber natürlich nicht so sauber und schon gar nicht als kompakte UDF.


    Da ich noch (immer) mit der AutoIt 3.3.14.0. arbeite, habe ich exemplarisch _ArraySlice und _Array2String getestet - funktioniert tadellos :) .

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."