Вступ
"Енігма" була однією з перших електромеханічних шифрових машин, використовуваних у Другій світовій війні. Це означає, що після кодування однієї літери вона змінить ключ для наступної літери. Це вважалося німецьким нерозривним , через величезний ключовий простір. Навіть жорстоке насильство було майже неможливим. Однак у Enigma була помилка дизайну. Шифрування листа ніколи не призведе до себе. Це означає, що лист A
може зашифрувати кожну букву, крім букви A
.
Візьмемо приклад кодованого повідомлення:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
Типовим німецьким словом був WETTERBERICHT
або звіт про погоду англійською мовою. За допомогою принципу вище ми можемо визначити, у яких місцях це слово може бути:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Це неможливо, оскільки I
неможливо зашифрувати себе, тому ми переходимо на 1 місце:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Це також неможливо, тому ми знову переміщуємо інше місце:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Це знову неможливо. Насправді перше можливе виникнення WETTERBERICHT
:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
0123456789012345678901234567890123456789012345678901234567890123
^
13
Отже, ми повертаємо 0-індексовану позицію першого можливого виникнення, що дорівнює 13 .
Задача
- Давши закодоване повідомлення та слово, знайдіть індекс першої можливої появи .
- Припустимо, що будуть використані лише основні алфавітні літери (
ABCDEFGHIJKLMNOPQRSTUVWXYZ
). - Якщо виникнення не знайдено, ви можете вивести будь-яке негативне ціле число, символ чи нічого (наприклад
-1
,X
). - Введення даних може бути прийнято як аргумент у окремих рядках, списках чи будь-чому іншому.
- Це код-гольф , тому подання з найменшою кількістю байтів виграє!
Тестові справи
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
ніколи не призведе до E
. Ось у чому полягає вся ця проблема.