Introdução
O Enigma foi uma das primeiras máquinas de codificação de rotores eletromecânicos usados na Segunda Guerra Mundial. Isso significa que, depois que uma única letra é codificada, ele altera a chave da próxima letra. Isso foi considerado inquebrável pelos alemães, devido ao enorme espaço-chave. Até a força bruta era quase impossível. No entanto, houve um erro de design no Enigma. Criptografar uma carta nunca resultaria em si mesmo. Isso significa que a carta A
pode criptografar para todas as letras, exceto a letra A
.
Vamos dar um exemplo de uma mensagem codificada:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
Uma palavra alemã típica era WETTERBERICHT
, ou previsão do tempo, em inglês. Com o princípio acima, podemos determinar em quais locais a palavra poderia estar:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Isso não é possível, porque o I
arquivo não pode ser criptografado, então passamos para um local:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Isso também não é possível, então movemos outro lugar novamente:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Isso novamente não é possível. De fato, a primeira ocorrência possível de WETTERBERICHT
é:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
0123456789012345678901234567890123456789012345678901234567890123
^
13
Portanto, retornamos a posição indexada 0 da primeira ocorrência possível, que é 13 .
A tarefa
- Dada uma mensagem codificada e uma palavra, encontre o índice da primeira ocorrência possível .
- Suponha que apenas caracteres alfabéticos maiúsculos básicos serão usados (
ABCDEFGHIJKLMNOPQRSTUVWXYZ
). - Se nenhuma ocorrência for encontrada, você poderá gerar qualquer número inteiro, caractere ou nada negativo (por exemplo
-1
,X
). - A entrada pode ser aceita como argumento, em novas linhas, listas ou qualquer outra coisa.
- Isso é código-golfe , então a submissão com a menor quantidade de bytes ganha!
Casos de teste
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
nunca resultaria em um E
. É disso que trata todo esse desafio.