infowars
Goto Top

Programm zur Berechnung der Buchstabenhäufigkeit mit Auffüllfunktion

Moin, es gibt ja Programme und Webseiten zur Berechnung von Buchstabenhäufigkeiten, wie z.B. hier:
https://gc.de/gc/buchstabenhaeufigkeit/
Leider finde ich kein Programm, welches mir den Text anschliessend mit Buchstaben bzw. Zeichen auffüllt, bis alle gleich häufig im Text vorkommen.
Kennt jemand so ein Programm und wenn nicht, wie und in welcher Sprache würdet ihr so etwas programmieren ?
Mit freundlichen Grüßen

Content-ID: 304182

Url: https://administrator.de/contentid/304182

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

129148
129148 11.05.2016 aktualisiert um 09:43:37 Uhr
Goto Top
Das kann man mit jeder Programmiersparache machen.
Mit Powershell z.B. keine große Sache:
$text = "BBBBBlaBlaxxggfffffffff"  
$newtext = $text
$groups = $text.ToCharArray() | group
$max = $groups | select -Expand Count -First 1
$groups | ?{$_.Count -lt $max} | %{$newtext += [string]$_.Name * ($max - $_.Count)}
$newtext
infowars
infowars 11.05.2016 aktualisiert um 10:44:22 Uhr
Goto Top
Danke für die Antwort, aber vllt. habe ich mich falsch ausgedrückt.
Das Programm sollte die Häufigkeit der Zeichen berechnen und dann mit anderen Zeichen z.B. 0-9, a-z, A-Z, evtl. Sonderzeichen aufüllen, so dass der Text am Ende die gleiche Häufigkeit aller Zeichen, Buchstaben etc. hat, nicht nur die ohnehin vorhanden.
Oder einfacher ausgedrückt:

Beispieltext:
ABC
Gewünschtes Resultat:
ABCDEFGHIJKLMNOPQRSTUVWXYZ

Beispieltext2:
AAA
Gewünschtes Resultat2:
AAABCDEFGHIJKLMNOPQRSTUVWXYZBCDEFGHIJKLMNOPQRSTUVWXYZBCDEFGHIJKLMNOPQRSTUVWXYZ

Oder Beispiel mit Zahlen:
444
Gewünschtes Resultat:
444012356789012356789012356789
129148
Lösung 129148 11.05.2016 aktualisiert um 11:10:47 Uhr
Goto Top
Dann musst du ja einen festen Wertebereich festlegen (z.B. alle 0-9, a-z, A-Z) damit das Skript ja die fehlenden ermitteln kann. Willst du nur Buchstaben oder Zahlen daraus müsstest du eine weitere Stufe der Erkennung einbauen.
$text = "AAA"  
# Char Bereiche festlegen 0-9, A-Z, a-z
$chars = (48..57 | %{[char]$_}); $chars+= (65..90 | %{[char]$_}); $chars += (97..122 | %{[char]$_})
$newtext = $text
# Chars gruppieren
$groups = $text.ToCharArray() | group
# max Anzahl eines einzelnen Chars ermitteln
$max = $groups | select -Expand Count -First 1
# vorhandene ergänzen
$groups | ?{$_.Count -lt $max} | %{$newtext += [string]$_.Name * ($max - $_.Count)}
# fehlende um die Anzahl ergänzen
compare $chars $groups.Name -PassThru | %{$newtext += [string]$_ * $max}
# neuen Text ausgeben
$newtext
infowars
infowars 11.05.2016 um 13:01:40 Uhr
Goto Top
Perfekt !
Vielen Dank.
Jetzt muss ich das nur noch auf andere Sprachen ummappen.
MfG