Analyse von Daten

  • Moin zusammen.

    Ich habe mal eine GUI erstellt wo nur das wesentliche drinne ist. Also das, was für die Lösung des Problems dasein muss. Die Verschlüsselungsroutine habe ich weggelassen und gleich das Ergebniss in das zweite Feld eingetragen.

    Nun wisst ihr schon mal wie die GUI aussieht.

    Kommen wir zu den Teiler-Knöpfen 1-10.
    Diese sollen grün und aktiv sein, wenn der Zahlenstring durch die jeweilige Zahl auf den Button zu teilen ist (OHNE Rest). Kurzform: Kann ich ohne Rest einstellige Zahlen erstellen, dann den Button mit der 1 aktiviert lassen, sonst deaktivieren? Das gleiche dann für alle anderen Buttons auch.

    Ist das abgeschlossen kommen wir zur Analyse.
    Analysiert werden nur die Gruppierungen, die ohne Rest teilbar sind und wo die Buttons grün sind.

    Wir machen aus den ganzen ziffern zweierpärchen und dann kommt dieses:

    Die Ausgabe soll nun links in die GUI aufgelistet werden. Spaltenname "2er".
    Die nächste Spalte sind dann "2er+" und das sieht so aus:

    .

    So sieht es dann für "3er" aus:

    .
    und das wäre dann "3er+":

    .

    die "4er" und "4er+" sehen dann so aus:

    "4er+"


    Aussehen soll es dann so, wobei es unten sich um irgend welche Zahlen handelt. 1:13 bedeutet das die 1 am häufigsten vorkommt und zwar 13x
    In der GUI sollen die höchten 10 Wert sortiert aufgezeigt werden. Höchste zu erst.

    Rang|1-er |2-er |2-er+|3-er|3-er+|4-er|4-er+
    1 |1:13|97:18|...

    2 |8:5 |18:12|...

    3 |9:3 |64:3 |...

    4|

    5|

    6|

    7|

    8|

    9|

    10|

    Nach der Analyse soll er dann nicht nur die am 10 häufigsten vorkommenden Zahlen speichern, sondern alle vorkommenden Zahlen und deren Häufigkeit. Eine Datei mit den 1_er, die nächste mit den 2_er, dann die 2_er+, usw.

    Das ganze richt doch irgendwie danach, das einiges in Funktionen besser aufgehoben wäre, als es nach und nach fast noch mal zu schreiben. Bei den Analysescripten ändern sich ja immer nur paar Zahlen. Vielleicht kann das ja abgefangen werden.

    So, bis hierhin soll es das erst einmal sein. Später, wenn das gelöst ist kann ich weiter sehen. Aber dann bin ich schon bei ca. 80% von meinem Projekt.

    Nun dürft ihr mich schlagen und FRagen. Weiß nicht ob ich das Ganze nun zu kurz gemacht habe.

    Und denkt dran, ich habe euch lieb. :*

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (21. September 2023 um 18:35)

  • Ich weiß nicht, ob ich die Aufgabe richtig verstanden habe, aber auf jeden Fall kann man das mit dem Map-Datentyp ganz gut lösen.

    Hier mal als universelle Funktion:

  • Danke Oscar.
    Du hast mich, so weit ich das sehe, richtig verstanden.
    Wie bzw. wo baue ich nun die anderen ein. Also "2er+", "3er+" "und 4er+".

    Und dann die Frage, wie baue ich das in die GUI ein. Das was in den Array ausgegeben wurde möchte ich nicht in einem Extrafensten aufpoppen lassen, sondern die Ausgaben nebeneinander in der GUI.
    Kannst Du mir da im Script schreiben wo was rein kommt bzw. erweitert werden muss?

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Wegen der Farbe wäre es im Prinzip so:

    AutoIt
    If Mod($deineZahl, 1) = 0 then 
      GUICtrlSetBkColor($Button1, 0xFF0000); Rot
    Else
      GUICtrlSetBkColor($Button1, 0x888888); Annahme für Grau
    Endif

    Du kannst das ganze in einer Schleife durchlaufen lassen, sofern du die Button Id's z.B. in ein Array geschrieben hast:

    AutoIt
    For $i = 1 to $aButtons[0]
        If Mod($deineZahl, $i) = 0 then 
          GUICtrlSetBkColor($aButtons[$i], 0xFF0000); Rot
        Else
          GUICtrlSetBkColor($aButtons[$i], 0x888888); Annahme für Grau
        Endif
    Next
  • Du kannst das ganze in einer Schleife durchlaufen lassen, sofern du die Button Id's z.B. in ein Array geschrieben hast:

    Oder:

    Falls einzelne Variable für jede ID und alle Button wurden nacheinander erstellt

    For $i = $ID_Button1st To $ID_ButtonLast ...

    Um in deiner Mod-Funktion dann von 1 steigende Werte zu erhalten musst du dort zurück rechnen

    Mod($deineZahl, ($i - $ID_Button1st) + 1)

  • So sieht es bis jetzt aus:

    Und jetzt würde ich gerne folgendes machen:
    Wenn ich Button11 drücke markiert er die Buttons 1-10 rot oder grün. *abgeharkt, läuft*

    Im nächsten Schritt hätte ich gerne unten die Auswertungen. Aber nur für Teiler, die grün sind

    sieht dannin diese Richtung aus:

    Rang|1-er |2-er |2-er+|3-er|3-er+|4-er|4-er+|....

    1 |1:13|97:18|...

    2 |8:5 |18:12|...

    3 |9:3 |64:3 |...

    4|

    5|

    6|

    7|

    8|

    9|

    10|

    im letzten Schritt möchte ich für jede Zahl die grün ist, das die Werte in eine Datei gespeichert werden (z.B. 1-er.ini, 2-er.ini, 2-er+.ini, ...). Hier oben die höchste Zahl und dann abwärts; und dasfür die roten Zahlen unten die Auflistung dargestellt wird. Oscar hat eine Lösung gepostet, aber ich weiß nicht wie ich aus den ganzen Array eine übersichtliche Darstellung in der GUI schreibe. Auf Grund der Anzahl an Spalten gehe ich mal davon aus, das ggf. waagerecht u. senkrecht gescrollt werden muss würde mich nicht stören.

    Wie weiter ??? :|

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (22. September 2023 um 22:26)

  • Wenn ich Button11 drücke markiert er die Buttons 1-10 rot oder grün.

    Das geht aber viel kürzer (Stichwort Array):

    Für das Ergebnis willst Du ein Listview, oder?

    Mache ich später, habe jetzt nicht genug Zeit.

  • Also ohne die ganzen "Xer+"-Spalten, sieht das jetzt so aus:

  • Das geht aber viel kürzer (Stichwort Array):
    Aw:
    Ist mir auch bereits aufgefallen und wollte ich, wenn alles später läuft "überarbeiten". ERst einmal soll alles funktionieren.

    Für das Ergebnis willst Du ein Listview, oder?
    Listview wäre das beste, oder? Ich meine ja.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Danke Oscar ! ! !

    Worin besteht denn der Unterschied zwischen "2er" und "2er+" bzw. "3er" und "3er+" usw.?

    Oben hast Du die Scripte identisch geschrieben. Das ergibt doch gar keinen Sinn!?

    Der 2er+ soll zwischen 2er und 3er.
    der 3er+ soll zwischen 3er und 4er.
    ...
    So wie Du oben ohne die 2er+, 3er+, ... aussieht ist gut. Spalten kann ich bestimmt später schmaler machen und auch eine Scrollleiste für das waagerechte hin und her fahren.

    Sieht doch schon sehr gut aus.

    Frage mich gerade was Sinnvoller ist.
    Nach dem Anzeigen in der Listview (?) alle Werte in Datei(en) speichern oder erst wenn ich z. B. einen der Button 1 bis Button 10 drücke. Sinnvoll wäre zweiteres, weil ich dann nur das abspeichere, was ich brauche, also wenn cih den dementsprechende Button drücke. Bequemer wäre, wenn er das gleich automatisch mit macht. Kopf kratze und einfach nicht weiß wofür ich mich entscheiden soll. Eigentlich doch die sinnvolle Lösung. JA !

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (23. September 2023 um 18:12)

  • Die 2er+, 3er+ und die anderen "Plus" sind so, das er immer eines nach rechts geht und nicht zwei.


    Beispiel sagt mehr als Wörter:

    String 1234567890

    2er 12 34 56 78 90

    2er+ 12 23 34 45 56 67 78 89 90


    Gerade mal das Gedicht "Herr von Ribbeck" verschlüsselt und analysiert zu Testzwecken.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    4 Mal editiert, zuletzt von Alina (23. September 2023 um 19:35)

  • Worin besteht denn der Unterschied zwischen "2er" und "2er+" bzw. "3er" und "3er+" usw.?

    Oben hast Du die Scripte identisch geschrieben. Das ergibt doch gar keinen Sinn!?

    Die 2er+, 3er+ und die anderen "Plus" sind so, das er immer eines nach rechts geht und nicht zwei.


    Beispiel sagt mehr als Wörter:

    String 1234567890

    2er 12 34 56 78 90

    2er+ 12 23 34 45 56 67 78 89 90

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Frage mich gerade was Sinnvoller ist.
    Nach dem Anzeigen in der Listview (?) alle Werte in Datei(en) speichern oder erst wenn ich z. B. einen der Button 1 bis Button 10 drücke. Sinnvoll wäre zweiteres, weil ich dann nur das abspeichere, was ich brauche, also wenn cih den dementsprechende Button drücke.

    Wenn das keine rhetorische Frage ist, dann solltest Du uns erstmal darüber aufklären, wozu diese Analyse überhaupt gut sein soll.

    Den Sinn dahinter habe ich jedenfalls noch nicht verstanden.

  • Moin Alina,

    eine Anmerkung und eine Frage:

    Code
    Case $Button11
        $laenge = StringLen(GUICtrlRead($Input2))
        $deineZahl =  1
        If Mod($laenge, 1) = 0 then
            GUICtrlSetBkColor($Button1, 0x00FF00); Grün
        Else
            GUICtrlSetBkColor($Button1, 0xFF0000); Annahme für Rot
        EndIf

    Jede beliebige Ganzzahl Modulo 1 ergibt immer 0. Den Einser Button kannst Du deshalb konstant grün färben. Ich kann mir auch nicht vorstellen, dass Du den für Deine Analyse überhaupt brauchen kannst.

    Die 2er+, 3er+ und die anderen "Plus" sind so, das er immer eines nach rechts geht und nicht zwei.

    Beispiel sagt mehr als Wörter:

    String 1234567890

    2er 12 34 56 78 90

    2er+ 12 23 34 45 56 67 78 89 90

    Meinst Du wirklich immer 1 oder Länge - 1?

    Zum Sinn der Analyse schätze ich mal, dass es um die Häufigkeitsverteilung geht, die ja Hinweise für die Entschlüsselung bieten kann.

  • Wenn das keine rhetorische Frage ist, dann solltest Du uns erstmal darüber aufklären, wozu diese Analyse überhaupt gut sein soll.

    Den Sinn dahinter habe ich jedenfalls noch nicht verstanden.

    Oscar, Du hast recht, das macht mehr sinn. Dann so.

    @Velted

    DAs mit dem
    ersten Button ist richtig. Aber das bleibt erst einmal. wir später in der Feinarbeit mit berücksichtigt.

    Ja, es geht um die Häufigkeitsanalyse
    Das mit der "1", das das ja immer teilbar ist, ist mir bekannt. Kann man sich sparen, aber läuft doch erst mal. Nicht böse mit mir gleich sein.

    Meinst Du wirklich immer 1 oder Länge - 1? Muss ich testen und ggf. mache ich aus der 1 ein -1, wäre ja "nur" ein Minuszeichen. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (24. September 2023 um 15:48)

  • Also ohne die ganzen "Xer+"-Spalten, sieht das jetzt so aus:

    Hallo Oscar.

    Wo muss ich es machen, das wenn ich auf Button 11 drücke, das dann vorher die "alte Auswertung" gelöscht wird?
    Sonst bin ich erst einmal sehr zufrieden.

    D A N K E

    L I N A

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Das passiert doch bereits: _GUICtrlListView_DeleteAllItems($idListview) in der Funktion "_AddToListview".

    Das habe ich auch so aus dem Script gelesen.
    Aber wenn ich z. B. nur hinten eine 0 einfüge und nochmals auf den Button drücke, leert er die Spalten nicht, wo es durch die zusätzloche 0, ja evtl. keinen Teiler gibt. Ich habe eine 0 hinten eingefügt und den Button gedrückt und dann zeigt er das so an.
    Aber sonst läuft das einwandfrei und gefällt mir sehr. Das mit den "2er+" und so lasse ich weg.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Aber wenn ich z. B. nur hinten eine 0 einfüge und nochmals auf den Button drücke, leert er die Spalten nicht, wo es durch die zusätzloche 0, ja evtl. keinen Teiler gibt.

    Ja, stimmt!

    Es werden nur die Listviews geleert, die neu gefüllt werden.

    Dann muss der Befehl eben oben in die Schleife: