Krypto-Quadrat

Krypto-Quadrat

Mittel

Anleitung

Implementiere die klassische Methode zum Verfassen geheimer Nachrichten, den sogenannten Quadratcode.

Ausgehend von einem englischen Text gibst du die kodierte Version dieses Textes aus.

Zuerst wird die Eingabe normalisiert: Leerzeichen und Satzzeichen werden aus dem englischen Text entfernt und die Nachricht wird in Kleinbuchstaben umgewandelt.

Dann werden die normalisierten Zeichen in Zeilen aufgeteilt. Diese Zeilen kann man sich als Rechteck vorstellen, wenn man sie mit Zeilenumbrüchen dazwischen ausgibt.

Zum Beispiel wird der Satz

"If man was meant to stay on the ground, god would have given us roots."

zu Folgendem normalisiert:

"ifmanwasmeanttostayonthegroundgodwouldhavegivenusroots"

Der Klartext sollte in einem möglichst quadratischen Rechteck angeordnet werden. Die Größe des Rechtecks ergibt sich aus der Länge der Nachricht.

Wenn c die Anzahl der Spalten und r die Anzahl der Zeilen ist, dann finde für das Rechteck r x c die kleinste mögliche ganze Zahl c, sodass:

  • r * c >= length of message,
  • und c >= r,
  • und c - r <= 1.

Unser normalisierter Text ist 54 Zeichen lang, was ein Rechteck mit c = 8 und r = 7 vorgibt:

"ifmanwas"
"meanttos"
"tayonthe"
"groundgo"
"dwouldha"
"vegivenu"
"sroots  "

Die kodierte Nachricht erhält man, indem man die Spalten von links nach rechts von oben nach unten liest.

Die obige Nachricht wird so kodiert:

"imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau"

Gib den kodierten Text in Blöcken aus, die perfekte Rechtecke (r X c) füllen, mit c Blöcken der Länge r, getrennt durch Leerzeichen. Bei Nachrichten, die n Zeichen kürzer sind als das perfekte Rechteck, füllst du jeden der letzten n Blöcke mit einem einzelnen Leerzeichen am Ende auf.

"imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn  sseoau "

Beachte: Würden wir diese Blöcke untereinander schreiben, könnten wir den Geheimtext visuell zurück in die ursprüngliche Nachricht entschlüsseln:

"imtgdvs"
"fearwer"
"mayoogo"
"anouuio"
"ntnnlvt"
"wttddes"
"aohghn "
"sseoau "
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
ARM64 Assembly Exercism

Bereit, mit Krypto-Quadrat zu starten?

Melde dich bei Exercism an, um ARM64 Assembly mit 78 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.