Введение
Enigma была одной из первых электромеханических машин с шифрованием ротора, используемых во Второй мировой войне. Это означает, что после того, как одна буква закодирована, она изменит ключ для следующей буквы. Это было признано немцами неразрывным из-за огромного пространства ключей. Даже перебор был почти невозможен. Однако в Enigma произошла ошибка проектирования. Шифрование письма никогда не приведет к самому себе. Это означает, что письмо A
может быть зашифровано для каждой буквы, кроме буквы A
.
Давайте рассмотрим пример закодированного сообщения:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
Типичное немецкое слово было WETTERBERICHT
, или прогноз погоды на английском. Используя приведенный выше принцип, мы можем определить, в каких местах слово может быть:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Это невозможно, поскольку I
не может быть зашифровано само по себе, поэтому мы переходим на 1 место:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Это также невозможно, поэтому мы снова перемещаем другое место:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
^
Это снова невозможно. На самом деле, первый возможный случай WETTERBERICHT
:
BHGEFXWFTIUPITHHLPETTTCLOEWOELMRXXPAKAXMAMTXXUDLTWTNHKELEPPLHPRQ
WETTERBERICHT
0123456789012345678901234567890123456789012345678901234567890123
^
13
Итак, мы возвращаем нулевую позицию первого возможного вхождения, которая равна 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
. Вот о чем весь этот вызов.