Hallo St.Pauli,
Zitat von
St.Pauli:
Welche Probleme wären das
ganz einfach: Sobald du Homophone einführst und diese dann auch gleich noch maskierst, brauchst du einen nondeterministischen Operator zur Auswahl deiner Homophone - und hast dadurch keine rein funktionale Abbildung mehr. Nehmen wir den Pseudozufall zu Hilfe, dann könnte das für englische Texte und ohne Maskierungszeichen so aussehen:
Delphi-Quellcode:
function Encode(s: string): string;
var
i, index: integer;
begin
Result := '';
// Schreibweise wird normiert
s := AnsiLowercase(s);
Randomize();
for i := 1 to Length(s) do
begin
index := Pos(s[i], 'etaonirsh');
if index > 0 then
begin
Result := Result + Chr(Ord('0') + index) + Chr(Ord('0') + 4 + Random(6));
Continue;
end;
index := Pos(s[i], 'bcdfgjklm');
if index > 0 then
begin
Result := Result + Chr(Ord('0') + index) + Chr(Ord('0') + 2 + Random(2));
Continue;
end;
index := Pos(s[i], 'pquvwxyz');
if index > 0 then
begin
Result := Result + Chr(Ord('0') + index) + '1';
Continue;
end;
// Alle anderen Zeichen werden unterdrückt
// Zahlen müssen also durch Zahlwörter dargestellt werden
end;
end;
Übrigens: Die von mir gezeigte Funktion zur einfachen Substitution ist streng genommen schon polyzyklisch, da ich die
ASCII Steuerzeichen und das Leerzeichen vom Gesamtalphabet ausnehme und standardmäßig mit der Potenz 0 verschlüssele - also gar nicht (Identität). Nichtsdestotrotz ist es eine funktionale und deterministische Abbildung. Deterministisch, weil für jedes Klartextzeichen das Schlüsselzeichen vorhergesagt werden kann. Zufall spielt keine Rolle.
Zitat von
St.Pauli:
aus reinem Interesse^^
Die beiden Schlusszeichen - haben die eine bestimmte Bedeutung? Ich kenne mich da nicht so aus.
@Penelopee: Ich fürchte dein thread hat sich in eine für dich ungewollte Richtung entwickelt und ich bin mit Schuld daran - bitte entschuldige, ich höre jetzt auf. Vielleicht war ja auch für dich etwas dabei.
Grüße vom marabu