Ich habe diese Idee (in C-Sprache), um zu überprüfen, ob zwei aus ASCII-Buchstaben gebildete Strings Anagramme voneinander sind:
Überprüfen Sie, ob die Zeichenfolgen die gleiche Länge haben.
Überprüfen Sie, ob die Summe der ASCII-Werte aller Zeichen für beide Zeichenfolgen gleich ist.
Überprüfen Sie, ob das Produkt der ASCII-Werte aller Zeichen für beide Zeichenfolgen gleich ist.
Ich glaube, wenn alle drei richtig sind, müssen die Strings Anagramme von einander sein. Ich kann es jedoch nicht beweisen. Kann mir jemand helfen, zu beweisen oder zu widerlegen, dass das funktionieren würde?
Danke!
Ich habe ein schnelles Programm geschrieben, um nach Konflikten zu suchen und fand heraus, dass dieser Ansatz nicht funktioniert. Die Zeichenfolgen ABFN und AAHM haben die gleiche ASCII-Summe und das gleiche Produkt, sind jedoch keine Anagramme voneinander. Ihre ASCII Summe ist 279 und ASCII Produkt ist 23.423.400.
Es gibt viel mehr Konflikte als das. Mein Programm, das über alle Länge-vier-Zeichenfolgen suchte, fand 11.737 Konflikte.
Als Referenz ist hier der C ++ - Quellcode:
%Vor%Hoffe, das hilft!
Die Buchstaben a-z und A-Z werden verwendet, um ein Array von 26 Primzahlen zu indizieren, und das Produkt dieser Primzahlen wird als Hash-Wert für das Wort verwendet. Gleiches Produkt & lt; - & gt; gleiche Buchstaben.
(die Reihenfolge der Hashwerte im primes26 [] Array im unteren Fragment basiert auf den Buchstabenhäufigkeiten in der niederländischen Sprache, als Versuch, das erwartete Produkt zu mimimieren)
%Vor%Danke für die tolle Frage! Anstatt zu versuchen, Ihren Vorschlag gänzlich zu widerlegen, habe ich irgendwann versucht, Wege zu finden, um ihn zu vergrößern, so dass er wahr wird. Ich habe das Gefühl, dass, wenn die Standardabweichungen gleich sind, die beiden gleich sind. Aber anstatt so weit zu testen, mache ich einen einfacheren Test und habe noch kein Gegenbeispiel gefunden. Hier ist was ich getestet habe:
Zusätzlich zu den von Ihnen genannten Bedingungen
Ich benutze das folgende Python-Programm. Ich habe keinen vollständigen Beweis, aber vielleicht hilft meine Antwort. Wie auch immer, schau es dir an.
%Vor%Wenn es Ihnen nichts ausmacht, die Zeichenfolgen zu ändern, sortieren Sie sie und vergleichen Sie die beiden Signaturen.