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 A
può 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é I
non 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
E
non sarebbe mai risultato in un E
. Questa è tutta questa sfida.