introduction
L'Enigma est l'une des premières machines à chiffrer à rotor électromécanique utilisées pendant la Seconde Guerre mondiale. Cela signifie qu’après le codage d’une seule lettre, la clé de la lettre suivante serait modifiée. Les Allemands considéraient cela comme incassable , à cause de l'énorme espace clé. Même forcer brutalement était presque impossible. Cependant, il y avait une erreur de conception dans Enigma. Crypter une lettre ne résulterait jamais en soi. Cela signifie que la lettre A
peut chiffrer toutes les lettres sauf la lettre A
.
Prenons un exemple de message codé:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
Un mot typiquement allemand était WETTERBERICHT
ou la météo en anglais. Avec le principe ci-dessus, nous pouvons déterminer à quels endroits le mot pourrait éventuellement être:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Ce n'est pas possible, car le I
fichier ne peut pas être chiffré pour lui-même, nous passons donc à 1 endroit:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Ce n’est pas non plus possible, nous nous déplaçons à nouveau:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Ceci encore n'est pas possible. En fait, la première occurrence possible de WETTERBERICHT
est:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
0123456789012345678901234567890123456789012345678901234567890123
^
13
Donc, nous retournons la position 0-indexée de la première occurrence possible, qui est 13 .
La tâche
- À partir d’un message codé et d’un mot, trouvez l’indice de la première occurrence possible .
- Supposons que seuls les caractères alphabétiques majuscules de base seront utilisés (
ABCDEFGHIJKLMNOPQRSTUVWXYZ
). - Si aucune occurrence n'est trouvée, vous pouvez générer un nombre entier négatif , un caractère ou rien (par exemple
-1
,X
). - Les entrées peuvent être acceptées en tant qu'argument, sur des sauts de ligne distincts, des listes ou toute autre chose.
- C'est du code-golf , donc la soumission avec le moins d'octets gagne!
Cas de 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
ne résulterait jamais en un E
. C’est l’objet de tout ce défi.