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:
#include <Array.au3>
; HIER: Einlesen des String aus dem Inputfeld mit den Nummer Ohne Leerzeichen
; Leerzeichen setzen nach jeder zweiten Ziffer ergibt dann $Str
Local $str = "33 94 99 54 25 04 56 85 57 57 34 98 57 14 24 35 64 29 48 14 19 49 86 66 37 14 39 57 84 26 58 36 29 57 44 22 58 55 57 42 34 87"
Local $numbers = ""
Local $frequency[100]
For $i = 0 To 99
$frequency[$i] = 0
Next
Local $numberArray = StringSplit($str, " ")
For $i = 1 To $numberArray[0]
Local $number = Int($numberArray[$i])
If $number >= 0 And $number <= 99 Then
$numbers &= $numberArray[$i] & " "
$frequency[$number] += 1
EndIf
Next
MsgBox(0, "Numbernpaare", "Numbernpaare: " & $numbers)
;_ArrayDisplay($frequency, "Numbernpaare")
Alles anzeigen
Die Ausgabe soll nun links in die GUI aufgelistet werden. Spaltenname "2er".
Die nächste Spalte sind dann "2er+" und das sieht so aus:
#include <Array.au3>
; HIER: Einlesen des String aus dem Inputfeld mit den Nummer Ohne Leerzeichen
; Leerzeichen setzen nach jeder zweiten Ziffer ergibt dann $Str
Local $str = "33 94 99 54 25 04 56 85 57 57 34 98 57 14 24 35 64 29 48 14 19 49 86 66 37 14 39 57 84 26 58 36 29 57 44 22 58 55 57 42 34 87"
Local $numberPairs = ""
Local $frequency[1000]
For $i = 0 To 999
$frequency[$i] = 0
Next
$str = StringRegExpReplace($str, "[^0-9]", "") ; Trennzeichen und Leerzeichen entfernen
For $i = 0 To StringLen($str) - 2 Step 1
Local $threeDigitNumber = StringMid($str, $i + 1, 2)
$numberPairs &= $threeDigitNumber & " "
$frequency[$threeDigitNumber] += 1
Next
MsgBox(0, "Number Pairs", "Number pairs found: " & $numberPairs)
;_ArrayDisplay($frequency, "Frequency of Number Pairs")
Alles anzeigen
.
So sieht es dann für "3er" aus:
#include <Array.au3>
Local $str = "33 94 99 54 25 04 56 85 57 57 34 98 57 14 24 35 64 29 48 14 19 49 86 66 37 14 39 57 84 26 58 36 29 57 44 22 58 55 57 42 34 87"
Local $numberPairs = ""
Local $frequency[1000]
For $i = 0 To 999
$frequency[$i] = 0
Next
$str = StringRegExpReplace($str, "[^0-9]", "") ; Trennzeichen und Leerzeichen entfernen
For $i = 0 To StringLen($str) - 2 Step 1
Local $threeDigitNumber = StringMid($str, $i + 1, 3)
$numberPairs &= $threeDigitNumber & " "
$frequency[$threeDigitNumber] += 1
Next
MsgBox(0, "Number Pairs", "Number pairs found: " & $numberPairs)
;_ArrayDisplay($frequency, "Frequency of Number Pairs")
Alles anzeigen
.
und das wäre dann "3er+":
#include <Array.au3>
Local $str = "33 94 99 54 25 04 56 85 57 57 34 98 57 14 24 35 64 29 48 14 19 49 86 66 37 14 39 57 84 26 58 36 29 57 44 22 58 55 57 42 34 87"
Local $numberPairs = ""
Local $frequency[10000]
For $i = 0 To 9999
$frequency[$i] = 0
Next
$str = StringRegExpReplace($str, "[^0-9]", "") ; Trennzeichen und Leerzeichen entfernen
For $i = 0 To StringLen($str) - 2 Step 1
Local $threeDigitNumber = StringMid($str, $i + 1, 3)
$numberPairs &= $threeDigitNumber & " "
$frequency[$threeDigitNumber] += 1
Next
MsgBox(0, "Number Pairs", "Number pairs found: " & $numberPairs)
;_ArrayDisplay($frequency, "Frequency of Number Pairs")
Alles anzeigen
.
die "4er" und "4er+" sehen dann so aus:
#include <Array.au3>
Local $str = "33 94 99 54 25 04 56 85 57 57 34 98 57 14 24 35 64 29 48 14 19 49 86 66 37 14 39 57 84 26 58 36 29 57 44 22 58 55 57 42 34 87"
Local $numberPairs = ""
Local $frequency[10000]
For $i = 0 To 9999
$frequency[$i] = 0
Next
$str = StringRegExpReplace($str, "[^0-9]", "") ; Trennzeichen und Leerzeichen entfernen
For $i = 0 To StringLen($str) - 4 Step 4
Local $threeDigitNumber = StringMid($str, $i + 1, 4)
$numberPairs &= $threeDigitNumber & " "
$frequency[$threeDigitNumber] += 1
Next
MsgBox(0, "Number Pairs", "Number pairs found: " & $numberPairs)
_ArrayDisplay($frequency, "Frequency of Number Pairs")
Alles anzeigen
"4er+"
#include <Array.au3>
Local $str = "33 94 99 54 25 04 56 85 57 57 34 98 57 14 24 35 64 29 48 14 19 49 86 66 37 14 39 57 84 26 58 36 29 57 44 22 58 55 57 42 34 87"
Local $numberPairs = ""
Local $frequency[10000]
For $i = 0 To 9999
$frequency[$i] = 0
Next
$str = StringRegExpReplace($str, "[^0-9]", "") ; Trennzeichen und Leerzeichen entfernen
For $i = 0 To StringLen($str) - 3 Step 1
Local $threeDigitNumber = StringMid($str, $i + 1, 4)
$numberPairs &= $threeDigitNumber & " "
$frequency[$threeDigitNumber] += 1
Next
MsgBox(0, "Nr. Paare", $numberPairs)
;_ArrayDisplay($frequency, "Nr. Paare")
Alles anzeigen
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|
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.