2017-03-20 5 views
0

Ich versuche, Codierung mit einem Umlauf codieren-Decodieren-Zyklus zu überprüfen. Ich habe eine String-Variable (z. B. "Hund"). Ich führe es durch meine Kodierungsfunktion und bekomme "jhb" (unter der Annahme eines Übersetzungswörterbuchs, das mappt (d: j, h: o, g: b)). Wie überprüfe ich das jetzt? Ich lasse "jhb" durch meine Entschlüsselungsfunktion laufen (jetzt mit dem entgegengesetzten Wörterbuch (j: d, o: h, b: g)). Dies gibt "Hund" zurück, was dem ursprünglichen Text entspricht.Logikanalyse - macht das Sinn

Meine Implementierung unten findet die Gleichheit nicht. Hilfe?

a = myfunction(text,dictionary) 
b = myfunction(a,oppisite_dictionary) 
a == b 
+0

ja, das würde funktionieren (wie Caesar-Verschlüsselung). Aber ich sehe deine Frage nicht. –

+0

Frage ist würde a = b oder sollte b = Text – chrischris

+0

'b == Text, wenn Ihre Routine die Arbeit richtig macht. –

Antwort

0

Gute Variablennamen werden dazu beitragen, dies lesbarer zu machen. Die Idee des Round-Triping ist, dass Sie einen Text kodieren, ihn mit der gegenüberliegenden Referenztabelle entschlüsseln und dann die entschlüsselte Version mit dem Original vergleichen. Sehen Sie sich diesen Python-Code an:

coded_text = encode(original_text, encode_dict) 
check_text = decode(coded_text, decode_dict) 
if check_text == original_text: 
    print "We did it!" 

Ist das einfacher zu lesen und zu verstehen? Denken Sie daran, dass Sie dies in einigen Wochen oder in einigen Jahren noch einmal verwenden müssen. Meine persönliche Aufzeichnung geht zurück zu einem Algorithmus in der linearen Matrixalgebra 32 Jahre nachdem ich den ursprünglichen Code geschrieben hatte ... und dann von FORTRAN nach C++ übersetzte.