introduzione
L'Enigma fu una delle prime macchine di cifratura a rotore elettromeccanico utilizzate nella seconda guerra mondiale. Ciò significa che dopo che una singola lettera è stata codificata, cambierebbe la chiave per la lettera successiva. Ciò è stato considerato indistruttibile dai tedeschi, a causa dell'enorme spazio chiave. Persino la forza bruta era quasi impossibile. Tuttavia, si è verificato un errore di progettazione in Enigma. La crittografia di una lettera non si tradurrebbe mai in se stessa. Ciò significa che la lettera Apuò crittografare tutte le lettere tranne la lettera A.
Facciamo un esempio di un messaggio in codice:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
Una tipica parola tedesca era WETTERBERICHT, o bollettino meteorologico in inglese. Con il principio sopra, possiamo determinare in quali posizioni potrebbe essere la parola:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Questo non è possibile, perché Inon può essere crittografato su se stesso, quindi ci spostiamo su 1 posto:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Anche questo non è possibile, quindi spostiamo di nuovo un altro posto:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Questo di nuovo non è possibile. In effetti, la prima possibile occorrenza di WETTERBERICHTè:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
0123456789012345678901234567890123456789012345678901234567890123
^
13
Quindi, restituiamo la posizione indicizzata 0 della prima occorrenza possibile, che è 13 .
L'obiettivo
- Dato un messaggio in codice e una parola, trova l'indice della prima occorrenza possibile .
- Supponiamo che verranno utilizzati solo caratteri alfabetici maiuscoli di base (
ABCDEFGHIJKLMNOPQRSTUVWXYZ). - Se nessun avvenimento viene trovato, è possibile emettere qualsiasi negativo intero, carattere, o niente (ad esempio
-1,X). - L'input può essere accettato come argomento, su newline separate, liste o qualsiasi altra cosa.
- Questo è code-golf , quindi vince l'invio con il minor numero di byte!
Casi test
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
Enon sarebbe mai risultato in un E. Questa è tutta questa sfida.