Einführung
Die Enigma war eine der ersten elektromechanischen Rotor-Chiffriermaschinen, die im Zweiten Weltkrieg eingesetzt wurden. Das bedeutet, dass nach der Kodierung eines einzelnen Buchstabens der Schlüssel für den nächsten Buchstaben geändert wird. Dies wurde von den Deutschen aufgrund des enormen Schlüsselraums als unzerbrechlich angesehen . Sogar Brute Forcing war fast unmöglich. Es gab jedoch einen Designfehler im Enigma. Das Verschlüsseln eines Briefes würde niemals zu sich selbst führen. Das bedeutet, dass der Brief A
mit Ausnahme des Buchstabens zu jedem Buchstaben verschlüsselt werden kann A
.
Nehmen wir ein Beispiel für eine codierte Nachricht:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
Ein typisches deutsches Wort war WETTERBERICHT
, oder Wetterbericht in Englisch. Mit dem obigen Prinzip können wir bestimmen, an welchen Stellen das Wort möglicherweise sein könnte:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Dies ist nicht möglich, da das I
nicht für sich selbst verschlüsselt werden kann, also bewegen wir uns um einen Platz:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Das ist auch nicht möglich, also ziehen wir wieder um:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Dies ist wiederum nicht möglich. In der Tat ist das erste mögliche Auftreten von WETTERBERICHT
:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
0123456789012345678901234567890123456789012345678901234567890123
^
13
Wir geben also die 0-indizierte Position des ersten möglichen Auftretens zurück, nämlich 13 .
Die Aufgabe
- Bestimmen Sie anhand einer verschlüsselten Nachricht und eines Wortes den Index des ersten möglichen Auftretens .
- Angenommen, es werden nur einfache alphabetische Großbuchstaben verwendet (
ABCDEFGHIJKLMNOPQRSTUVWXYZ
). - Wenn kein Vorkommen gefunden wird, kann die Ausgabe jedes negativ ganze Zahl, Zeichen oder nichts (zB
-1
,X
). - Eingaben können als Argumente, in separaten Zeilenumbrüchen, Listen oder anderen Elementen akzeptiert werden.
- Das ist Code-Golf , also gewinnt die Einsendung mit der geringsten Anzahl von Bytes!
Testfälle
Input: BHGEFXWFTIUPITHHLPETTTCLOEWOELM, WETTERBERICHT
Output: 13
Input: ABCDEFGHIJKL, HELLO
Output: 0
Input: EEEEEEEEEEEE, HELLO
Output: -1
Input: XEEFSLBSELDJMADNADKDPSSPRNEBWIENPF, DEUTSCHLAND
Output: 11
Input: HKKH, JJJJJ
Output: -1
E
niemals zu einem führen würde E
. Darum geht es bei dieser ganzen Herausforderung.