das problem ist, das deine beiden kriterien sich gegenseitig ausschließen. um das zweite kriterium zu erfüllen, müsste man den buchstaben eine zahl zuweisen, die auf basis der stellung im alphabet erstellt wurde.
das ganze lässt sich recht leicht umsetzen. man könnte zb auf 2er potenzen basis arbeiten.
also zb array der buchstaben erstellen:
(man kann das natürlich auch in einer schleife über ascii umwandlung erledigen)
und dann jedem im string vorkommenden buchstabe, 2^arrayposition zuordnen und alle resultierenden zahlen addieren. so wäre rein logisch gesehen die kollisionsrate = 0. man könnte sogar noch im nachhinein genau bestimmen, welcher buchstabe wie oft im string vorkam.
das problem ist wenn man den buchstaben so zahlen zuordnet, kann man zb "ab" nichtmehr von "ba" unterscheiden im nachhinein.
wenn du auch die reihenfolge der buchstaben als wichtig erachtest, musst du den string als array von buchstaben betrachten, und diese auch dementsprechend in ein array aus zahlen umwandeln (einfach über ascii tabelle).
es ist definitiv nicht möglich einem string eine einzige zahl zu zuweisen, und dabei noch beide deiner kriterien zu erfüllen. das lässt sich wie bereits erwähnt nur über arrays von buchstaben/zahlen lösen.
das ganze lässt sich recht leicht umsetzen. man könnte zb auf 2er potenzen basis arbeiten.
also zb array der buchstaben erstellen:
Code:
buchstabe[26] = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
und dann jedem im string vorkommenden buchstabe, 2^arrayposition zuordnen und alle resultierenden zahlen addieren. so wäre rein logisch gesehen die kollisionsrate = 0. man könnte sogar noch im nachhinein genau bestimmen, welcher buchstabe wie oft im string vorkam.
das problem ist wenn man den buchstaben so zahlen zuordnet, kann man zb "ab" nichtmehr von "ba" unterscheiden im nachhinein.
wenn du auch die reihenfolge der buchstaben als wichtig erachtest, musst du den string als array von buchstaben betrachten, und diese auch dementsprechend in ein array aus zahlen umwandeln (einfach über ascii tabelle).
es ist definitiv nicht möglich einem string eine einzige zahl zu zuweisen, und dabei noch beide deiner kriterien zu erfüllen. das lässt sich wie bereits erwähnt nur über arrays von buchstaben/zahlen lösen.